Javascript 角度指令破坏范围?

Javascript 角度指令破坏范围?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,首先,我是一个新的角度,并意识到我可能错过了一个核心概念 以JSFIDLE为例: 我希望能够单击每个链接,并查看DOM中的{{{driveState.currentView}}更新 一切正常,直到我添加一个指令,帮助我检测页面上的所有图像何时成功加载。有了该指令,绑定似乎中断,您不能再单击每个链接并查看driveState.currentViewupdate 为什么会这样 要在JSFIDLE中测试这一点,请注意以下各项可以正常工作: …这会以某种方式破坏数据绑定: 提前感谢。原因是指令正在定

首先,我是一个新的角度,并意识到我可能错过了一个核心概念

以JSFIDLE为例:

我希望能够单击每个链接,并查看DOM中的
{{{driveState.currentView}}
更新

一切正常,直到我添加一个指令,帮助我检测页面上的所有图像何时成功加载。有了该指令,绑定似乎中断,您不能再单击每个链接并查看
driveState.currentView
update

为什么会这样

要在JSFIDLE中测试这一点,请注意以下各项可以正常工作:

…这会以某种方式破坏数据绑定:


提前感谢。

原因是指令正在定义自己的控制器。这会生成控制器类的一个新实例,并以某种方式破坏了作用域

要修复此问题,请取出指令定义中的
控制器:“Ctrl',

以下是新的指令代码:

myApp.directive('imageonload', function () {

    return {
        restrict: 'A',
        link: function ($scope, element) {

            element.bind('load', function () {

                _viewsLoaded++;
                if (_viewsLoaded === $scope.appViews.length) {
                    alert('init layout here');
                }
            });
        }
    };
});

还有一个给你的。

aghhh!我从来没见过。我想这就是我将控制器链接到指令的方式。非常感谢。