0

AngularJS で Fotorama プラグインを使用しています。ng-clickFotorama マークアップ内にディレクティブを配置すると、ハンドラーがトリガーされません。これが私のサンプルマークアップです:

<div class="fotorama" data-click="false">
    <div onclick="myJsHandler()">
        <img src="/images/2.png"/>
    </div>
    <div ng-click="myNgHandler()">
        <img src="/images/1.png"/>
    </div>
</div>

最初のハンドラー (非角度) は正常に機能しますが、2 番目のハンドラーは機能しません。その理由は、Fotorama が DOM を再構築し、AngularJS がこれらの変更を認識していないためと思われます。私が見つけた唯一の回避策は、$compileAngular 以外のコードから直接サービスを使用することです。

$(function(){
    $(".fotorama").each(function() {
        var content = $(this);
        angular.element(document).injector().invoke(function($compile) {
            var scope = angular.element(content).scope();
            $compile(content)(scope);
        });
    });
});

Fotorama を AngularJS と統合するためのより良い方法はありますか?

4

1 に答える 1