我正在使用带有 AngularJS 的 Fotorama 插件。如果我将ng-click
指令放在 Fotorama 标记中,它不会触发处理程序。这是我的示例标记:
<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>
第一个处理程序(非角度)工作正常,但第二个没有。似乎原因是 Fotorama 重建了 DOM,而 AngularJS 不知道这些变化。我发现的唯一解决方法需要$compile
直接从非 Angular 代码中使用服务:
$(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 集成?