如何使$watch只触发一次
How to make $watch only trigger once?
我添加了$watch
;如果undefined
panodatas,$watch
中的代码会抛出错误:
scope.$watch('panodatas', function(newVal) {
if ('isCreate' in attrs) {
$('.modal #points').hide()
$('.modal #points-info').hide()
}
if (newVal || 'isCreate' in attrs) {
scope.x = 0
scope.y = 0
scope.points = []
问题是,每次更改时都会触发代码panodatas
。
我怎样才能做到$watch
只触发一次,而不是在将来panodatas
发生变化时触发?
scope.$watch
返回一个取消注册函数,所以如果你这样做:
var dereg = scope.$watch('panodatas', function(newVal) {
dereg();
});
它将在运行后立即取消注册。
试试这个:
var unwatch = $scope.$watch('someVar', function() {
unwatch();
});
您可以清除函数内部的$watch
-
var listener = $scope.$watch("panodates", function () {
// ...
listener(); // Would clear the watch
});
它将被调用一次,然后观察程序将被清除。
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 使函数只运行一次(Javascript)
- 使Javascript滑块每4秒自动滑动一次
- HTML画布-使动画一次发生一个,而不是同时发生多个
- 显示弹出脚本,使其在每个浏览器会话中只弹出一次
- 如何使除法符号在基本计算器的数字之间只出现一次
- 使弹性项目一次包装两个
- 使我的简介页面仅按用户或计算机显示一次
- jQuery:使事件在滚动时只发生一次
- 如何使网页一次只能访问一次?(JS+HTML)
- 如何使函数在 2 分钟后执行,然后每隔 2 分钟执行一次
- 如何使jquery函数一次运行一个
- 如何使$watch只触发一次
- 如何使细胞一次改变一个颜色,而不是一次改变所有颜色
- 使JavaScript每5秒更改一次背景图像
- 如何使我的Chrome扩展只注入一次脚本
- 如何使模式窗口只显示一次
- 如何使Chrome扩展中的表单只显示一次
- 使slideToggle一次只产生一个元素的效果
- 只能使HTML列表洗牌一次