加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:31:22 所属栏目:安全 来源:网络整理
导读:我有一些工厂: .factory("someFactory",function() { var someFactory = {}; someFactory.objects = [ { name: "obj1" },{ name: "obj2" } ]; return someFactory;} 还有一些控制器,它监视这个工厂对象名称的变化: .controller("someController",["someFac
我有一些工厂:

.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中有解释.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读