当观察AngularJS中的模型更改时,如何忽略初始负载?

前端之家收集整理的这篇文章主要介绍了当观察AngularJS中的模型更改时,如何忽略初始负载?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个网页作为单个实体的编辑器,它作为一个深层图在$ scope.fieldcontainer属性。在我从我的REST API(通过$ resource)获得响应后,我向“fieldcontainer”添加一个手表。我使用这个手表来检测页面/实体是否“脏”。现在我使保存按钮反弹,但真的我想让保存按钮不可见,直到用户弄脏的模型。

我得到的是手表的一个触发器,我认为发生,因为.fieldcontainer = …分配是在我创建我的手表后立即发生。我在想只是使用一个“dirtyCount”属性来吸收初始的假警报,但感觉非常hacky …我想,有一个“角度习惯”的​​方式来处理这 – 我不是唯一的使用手表检测脏模型。

这里是我设置我的手表的代码

$scope.fieldcontainer = Message.get({id: $scope.entityId },function(message,headers) {
                $scope.$watch('fieldcontainer',function() {
                        console.log("model is dirty.");
                        if ($scope.visibility.saveButton) {
                            $('#saveMessageButtonRow').effect("bounce",{ times:5,direction: 'right' },300);
                        }
                    },true);
            });

我只是一直认为,有一个更干净的方式来做这个比保护我的“UI脏”代码与“if(dirtyCount> 0)”…

在初始加载之前设置标志,
var initializing = true

然后当第一个$ watch激发,做

$scope.$watch('fieldcontainer',function() {
  if (initializing) {
    $timeout(function() { initializing = false; });
  } else {
    // do whatever you were going to do
  }
});

标志将在当前摘要周期结束时被删除,因此下一个更改不会被阻止。

原文链接:https://www.f2er.com/angularjs/147390.html

猜你在找的Angularjs相关文章