AngularJS – $scope的机制.$watch – 它只是一个观察者模式吗?

前端之家收集整理的这篇文章主要介绍了AngularJS – $scope的机制.$watch – 它只是一个观察者模式吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些工厂:

.factory("someFactory",function() {

  var someFactory = {};

  someFactory.objects = [
    { name: "obj1" },{ name: "obj2" }
  ];

  return someFactory;
}

还有一些控制器,它监视这个工厂对象名称的变化:

.controller("someController",["someFactory","$scope",function($scope,someFactory) {

  for (var i = someFactory.values.length - 1; i >= 0; i--) {
    $scope.$watch("someFactory.values[" + i + "].name",function(newVal,oldVal,scope) {
        if(newVal !== undefined) {
            // do something
        }
  });

}]);

我很惊讶这实际上是有效的,我不必单独为我工厂中的每个对象编写代码.我想我很惊讶,因为我对$scope的实际缺乏了解.如果有人问我,我会告诉他这就像是观察者的好模式.这是一个合适的解释吗?

解决方法

这不是观察者模式.使用观察者模式,观察对象在其变化时明确地通知其观察者.

AngularJS监视机制比较处理事件之前和之后表达式的评估结果,如果表达式的值发生了变化,它会通知观察者.如果观察者执行导致再次改变表达值,则再次调用观察者等,直到达到10个周期的限制.

这在$scope documentation中有解释.

猜你在找的Angularjs相关文章