当前位置: 首页 > 面试题库 >

在观看AngularJS中的模型更改时如何忽略初始负载?

宫晟
2023-03-14
问题内容

我有一个网页可以用作单个实体的编辑器,它位于$ scope.fieldcontainer属性中的深层图形中。从REST API获得响应(通过$
resource)后,将手表添加到“
fieldcontainer”。我正在使用此手表来检测页面/实体是否为“脏”。现在,我正在使“保存”按钮弹跳,但实际上我想使“保存”按钮不可见,直到用户弄脏模型为止。

我得到的只是手表的一个触发器,我认为这是发生的,因为.fieldcontainer = …分配是在创建手表后立即进行的。我本来只是想使用“
dirtyCount”属性来吸收最初的错误警报,但是感觉很hacky……而且我认为必须采用一种“ Angular惯用的”方式来解决此问题-
我不是唯一的人用手表检测脏模型。

这是我设置手表的代码:

 $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);
            });

我一直在想,有一种比使用“ if(dirtyCount> 0)”保护我的“ UI污染”代码更干净的方法了……


问题答案:

在初始加载之前设置一个标志,

var initializing = true

然后当第一个$ watch触发时,

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

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



 类似资料:
  • 问题内容: 我有一个指令可以遍历链接元素的 children 。 但是,尚未将子级加载到DOM中,因为尚未解析其s表达式。 如何确定父指令知道它的DOM树已更改? 我可以使用,但是感觉不可靠。我也可以用代替,但这不能回答问题,也不是我所需要的。 问题答案: 所以这就是我最终要做的事情: 我发现您可以将函数传递给。从那里,很容易返回想要监视更改的表达式的值。它的工作原理就像在范围上传递属性的键字符串

  • 问题内容: 我试图弄清楚Angular的工作原理,并在模型更改时无法更新视图。 的HTML JS http://jsfiddle.net/N2G7z/ 有任何想法吗? 问题答案: 正如上面提到的Ajay beniwal一样,您需要使用Apply来开始消化。

  • 问题内容: 有没有更好的方法来忽略Angularjs中的时区: “ 2014-01-18 14:30:00”而不是“ 2014-01-18 15:30:00” http://jsfiddle.net/samibel/2rMXJ/ 问题答案: 这是一个例子: 只需管道另一个过滤器: 在您的模板中:

  • 问题内容: 我正在尝试遵循Apple的“ 开始开发iOS应用程序(Swift)”教程,并且几乎完成了该教程。当我使用Xcode 8(我认为使用Swift 3而不是Swift 2)时,不得不修改本教程的几个部分。但是,我遇到了以下编译器错误,我不知道为什么: 在以下功能中: 我猜想有一个不同的NSIndexPath初始化程序在Swift 3中已更改,但我找不到它。难道我做错了什么? 谢谢, 问题答案

  • 问题内容: 我想我的调用或当我指定一个文件被修改浏览器。修改文件后,我该如何“观看”该文件以执行某些操作? 以编程方式看来,这些步骤是..基本上每秒设置一个永无休止的间隔,并缓存初始修改日期,然后每当更改一次调用X时便比较该日期。 问题答案: 如前所述,您可以使用pyinotify: 例如: 这比轮询更有效。内核会告诉您何时进行操作,而无需您不断询问。

  • 我正在用Java编程一个名词短语提取器,并试图使用OpenNLP库来标记名词。不幸的是,OpenNLP的文档非常混乱。目前,我只是在标记一串英文文本。文档中让我使用类似的方法初始化令牌模型: 我在这里困惑的是“en token.bin”是什么,以及在哪里可以找到它。它应该包含在压缩文件的原始下载中吗?还是我必须从OpenNLP的网站下载? 以下是文档的链接:https://opennlp.apac