4

私はさまざまなコンテンツを持つ ng-switch を持っています。そのうちの 1 つはギャラリーであり、スイッチ ng-switch-when=gallery コンテンツの準備ができた後、すべての画像に JQuery イベントを設定する必要がありますが、イベントの前にイベントが発生するため、幸運ではありません。コンテンツが読み込まれます。

ギャラリーは 3 番目の ng-switch-when であるため、ng-init でイベントを設定できません。

では、ng-switch にはコンテンツ ロード イベントまたはディレクティブがありますか?

<a href="" ng-click="menuSelection='gallery';loadLibraryGallery();">GALER&Iacute;A</a>

コントローラ

$scope.loadLibraryGallery = function(){
//I have to set this event to childrens after ng-switch-when=gallery is loaded
        $('.popup-gallery').magnificPopup();

    };

何か案が。よろしくお願いします。

4

2 に答える 2

14

github でngSwitch ディレクティブのソースを表示できます。 $broadcast 関数も $emit 関数も呼び出さないため、そのようなイベントはありません。

独自のディレクティブを作成してみることができますが、これは非常に簡単です。このディレクティブは、html コードが挿入された後にリンクされます。

これがあなたのコードだとしましょう:

html:

<ANY ng-switch="expression">
    <ANY ng-switch-when="matchValue1" data-gallery>...</ANY>
    <ANY ng-switch-when="matchValue2">...</ANY>
    <ANY ng-switch-default>...</ANY>
</ANY>

js:

angular.module('app').directive('gallery', function(){
     return function ($scope, $element, attrs) {
         $element.find('.popup-gallery').magnificPopup(); 
     }
});

DOM を変更したり、コントローラーから DOM を変更するコードを呼び出したりしないでください。これはディレクティブの仕事です。

于 2013-11-04T23:30:56.583 に答える