Angular 1.4.9 アプリがあります。サードパーティの JS プラグイン (Jasny Bootstrap) を使用しています。シンプルな JQuery を使用しているように見える JS コンポーネントがいくつかあります。
彼らのドキュメントによると、プラグインは「itemShown」などの重要なポイントでイベントを発行します。次のように、ページのコントローラーでこれを検出してそれに基づいて行動できるかどうか疑問に思っていました。
「on itemShown 関数 () {...」
Angular 1.4.9 アプリがあります。サードパーティの JS プラグイン (Jasny Bootstrap) を使用しています。シンプルな JQuery を使用しているように見える JS コンポーネントがいくつかあります。
彼らのドキュメントによると、プラグインは「itemShown」などの重要なポイントでイベントを発行します。次のように、ページのコントローラーでこれを検出してそれに基づいて行動できるかどうか疑問に思っていました。
「on itemShown 関数 () {...」
次の例は、カスタム jQuery イベントを検出し、属性によって定義された関数を呼び出すカスタム ディレクティブを示しています。
app.directive("onBsShowOffcanvas", function($parse) {
return function linkFn(scope, elem, attrs) {
var fn = $parse(attrs.onBsShowOffCanvas);
elem.on("show.bs.offcanvas", function(e) {
fn.assign(scope, {$event: e});
scope.$apply();
});
}
});
HTML でディレクティブを使用するには:
<div on-bs-show-offcanvas="offcanvasHandler($event)">
イベント オブジェクトは として公開することをお勧めします$event
。これは、AngularJS のイベント ディレクティブでは慣例であるためです。
$イベント
ディレクティブは、その式のスコープ内のオブジェクトを好み
ngClick
、ngFocus
公開します。オブジェクトは、jQuery が存在する場合はjQuery イベント オブジェクト$event
のインスタンス、または類似の jqLite オブジェクトです。
アプリに jQuery を埋め込む場合 (Angular はデフォルトで jQlite を埋め込みますが、jQuery を埋め込まないため)、ここに 1 つの解決策があります。
要素の準備ができたら、コントローラーから実行できます。
$element.ready(function () {
$('#offcanvasId').on('hide.bs.offcanvas', function(){
//...
})
});
とはいえ、jQuery を使用しない回避策がいくつかあるはずです。
ドキュメントの詳細については、https://docs.angularjs.org/api/ng/function/angular.elementを参照してください。