0

Angular 1.4.9 アプリがあります。サードパーティの JS プラグイン (Jasny Bootstrap) を使用しています。シンプルな JQuery を使用しているように見える JS コンポーネントがいくつかあります。

彼らのドキュメントによると、プラグインは「itemShown」などの重要なポイントでイベントを発行します。次のように、ページのコントローラーでこれを検出してそれに基づいて行動できるかどうか疑問に思っていました。

「on itemShown 関数 () {...」

4

2 に答える 2

0

AngularJS でのカスタム jQuery イベントの処理

次の例は、カスタム 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 のイベント ディレクティブでは慣例であるためです。

$イベント

ディレクティブは、その式のスコープ内のオブジェクトを好みngClickngFocus公開します。オブジェクトは、jQuery が存在する場合はjQuery イベント オブジェクト$eventのインスタンス、または類似の jqLit​​e オブジェクトです。

-- AngularJS 開発者ガイド -- $event

于 2016-02-18T00:08:53.567 に答える
0

アプリに jQuery を埋め込む場合 (Angular はデフォルトで jQlite を埋め込みますが、jQuery を埋め込まないため)、ここに 1 つの解決策があります。

要素の準備ができたら、コントローラーから実行できます。

$element.ready(function () {
    $('#offcanvasId').on('hide.bs.offcanvas', function(){
        //...
    })
});

とはいえ、jQuery を使用しない回避策がいくつかあるはずです。

ドキュメントの詳細については、https://docs.angularjs.org/api/ng/function/angular.elementを参照してください。

于 2016-02-18T10:44:06.350 に答える