多くのタブを含むことのできるWebアプリケーションがあります(ブートストラップピルとタブを使用)。 ユーザーがコマンドをクリックしたとき(コマンドメニューから)、ユーザーが既存のタブ内のエンティティをクリックしたときにタブが追加されます(タブがレコードのリストを表示し、特定のレコードをクリックしたときレコード内のすべてのフィールドを表示する新しいタブが作成されます)。Javascript - ユーザーのシミュレーションをシミュレートする
既存のタブは、対応するピルの右側にある小さな「X」をクリックすると閉じます。
これは私が働いて解決策を見つけることができない一つのことを除いてスムーズに動作します:新しいタブが作成されると、ユーザーは、対応するタブが表示されるようにピルをクリックすることを余儀なくされ
。
Tabのコントローラーが初期化の終了時にイベントを送出するような仕組みを設定しました。これは、タブの作成を処理するコントローラーと同じコントローラーが受信したイベントです。イベントハンドラ内
は、私が が成功せず新しいタブをアクティブ にいくつかのオプションを試してみました。すべてのオプションはエラーなしで実行されますが、何も起こりません。私が試したことのいくつか:
angular.element(domElement).triggerHandler('click');
、thisポストで提案されているソリューションズ、
...
彼らは、述べたようにすべてエラーなしで完了しますが、何もしませんそのトリックだ。
どんな提案も高く評価されます(特に、仕事をすることが判明した場合)。
EDIT:
HTMLの丸薬とタブ:新しいタブコントローラ内のイベントの
<!-- Pills... -->
<li ng-repeat="One_Tab in Running_Tabs" id="Pill_{{One_Tab.Tab_ID}}">
<a href="#{{One_Tab.Page_Type}}_{{One_Tab.Instance}}" data-toggle="tab"><b>{{One_Tab.Title}} ({{One_Tab.Instance}})</b>
<i class="glyphicon glyphicon-remove pull-right"
style="display:block;float:right;cursor:pointer;background:red;color:white;margin:5px 0 0 10px;top:-5px;border:solid 4px red;border-radius:11px"
ng-click="Close_Tab(One_Tab.Tab_ID)"></i>
</a>
</li>
</ul>
<!-- Tabs... -->
<div class="tab-content clearfix">
<div class="tab-pane" ng-repeat="One_Tab in Running_Tabs" id="{{One_Tab.Page_Type}}_{{One_Tab.Instance}}" ng-include="Build_Page_Refrerence(One_Tab.Page_Type)">
</div>
</div>
エミッションここ
は、アプリケーションの関連部分を記述したコードのいくつかの作品です。
$rootScope.$emit("Activate_Me",$scope.Tab_Forward_Info.Pill_Name) ;
イベントのフロント: $rootScope.$on('Activate_Me', function (event, Pill_Name) {
console.log("Request received from new tab to become active: " + Pill_Name) ;
$("#Pill_Name").click() ;
}) ;
注:Pill_Name
クリックをシミュレートする必要のある要素の名前を運びます。
イベントは送信され(トリガーされ)、正しいコードの要素で受信されます。
を変更するための
その可能.removeclass("class")
を使用することができます場合は、実行可能なplunker/jsfiddleまたは少なくともコードあなたを作ってくださいaddclassを使用他の人があなたの問題を迅速に再現できるようにするためにこれまでにありました。クリックをシミュレートする代わりに – Pengyy
を使用すると、クリックをプログラム的に行うことはできませんか?同様に、関数呼び出しやイベントの排出? – tanmay
@Pengyy、それはあまりにも複雑で、このためにプランナーを作ることはできません。私はコードの関連する部分を数分で追加します(BTW、下の投票に感謝...)。 – FDavidov