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

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

发布时间:2020-12-17 09:21:07 所属栏目:安全 来源:网络整理
导读:我有一个网页作为单个实体的编辑器,它作为一个深层图在$ scope.fieldcontainer属性。在我从我的REST API(通过$ resource)获得响应后,我向“fieldcontainer”添加一个手表。我使用这个手表来检测页面/实体是否“脏”。现在我使保存按钮反弹,但真的我想让保
我有一个网页作为单个实体的编辑器,它作为一个深层图在$ 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
  }
});

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

(编辑:李大同)

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

    推荐文章
      热点阅读