强制 $scope.$watch 只开火一次
Forcing $scope.$watch to only fire once
$scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
});
// Hi!
// Hi!
如何防止此$watch多次触发? 在上面的这个片段之前,我不会在任何时候定义或更改$scope.text
。 我试图测试newValue !== oldValue
但这并没有改变任何东西。
编辑:
我已将问题缩小到指令问题。 正在监视的输入框位于自定义指令内,由于某种原因,该指令多次影响输入框的ng-model
。
$scope.$watch(..)
返回一个取消绑定函数,因此请执行以下操作:
var unbind = $scope.$watch('text', function () {
$scope.obj = new Text($scope.text);
console.log('Hi!');
unbind();
});
这将导致它触发,并在发射一次后自行解绑。
编辑:
仅值更改:
$scope.$watch('text', function (nv, ov) {
if (ov != nv) {
$scope.obj = new Text($scope.text);
console.log('Hi!');
}
});
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- 使用每500ms运行一次的jquery函数是个好主意吗
- For循环在Jquery中只运行一次
- 强制 $scope.$watch 只开火一次