我对 AngularJs 指令比较陌生,我试图了解范围是如何工作的。我想我理解得很好,但后来我遇到了如下问题。我的指令:
<ng-view>
<div my-directive ng-click="foo()" >...</div>
</ng-view>
指令代码:
app.directive('myDirective',function(){
return function(scope,element,attrs){
scope.foo = function(){...}
}
})
我希望foo()
在单击元素时触发,但事实并非如此。用batarang检查范围我看到范围存在(id:#003),rootScope作为它的父级,但是当单击元素或其子级时,范围是根(id:#002),我还检查了angular.element($('div[my-directive]')).scope()
它可能是一个batrang问题,但结果是一样的。
更新:我想我找到了问题的原因,在我的真实应用程序中,使用指令的元素位于指令内ngView
,当我将指令放在 ngView 之外时,我在链接函数中定义的属性现在在范围内可见(根范围)。我猜这是由于异步加载,但我需要确认,在这个 fiffle中,我使用了带有静态模板的 ngView 但它不起作用(它起作用,我无法重现问题)。