我们何时需要手动观察范围变量以及何时不在AngularJS中

时间:2015-05-12 23:53:17

标签: angularjs angularjs-directive

所有

我是AngularJS指令的新手,我得到一个关于监视范围变量的问题:

我想知道何时应该手动添加范围。$ watch,例如:我构建了一个像

这样的指令
        app.directive("followerlist", function(){
            return {
                restrict: "AE",
                scope: {
                    fllws: "="
                },
                templateUrl: "tmpl/followerlist.html",
                controller: function(){

                },
                link: function(scope, EL, attrs){

                }
            }
        });

模板如:

<ul>
<li ng-repeat="f in fllws">
    {{f.login}}
</li>
</ul>

html就像:

<body ng-controller="main">
    <followerlist fllws="followers"></followerlist>
</body>

通过这种方式,我不需要手动注册任何观察者,但仍然可以响应数据更改(如果我在主控制器中更改$ scope.followers,列表可以立即更改)

我认为我应该手动观察外部和内部变量的变化(有时候变化不会响应,除非我手动注册观察者),我想知道是否有人可以给我一些关于何时应该手动观看以及何时进行操作的摘要不需要吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您的代码无需手动创建监视即可运行,因为当您将fllws属性绑定到模板时,Angular会为您执行此操作。除非您使用one-time binding,否则Angular会自动为每个绑定执行此操作。

每次需要在模型更改或条件成立时执行某些操作时,都应手动创建监视。 This answer包含有关它的更多技术信息。