我添加了$watch
;如果panodatas为$watch
,则undefined
内的代码会引发错误:
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
将来发生变化?
答案 0 :(得分:1)
试试这个:
var unwatch = $scope.$watch('someVar', function() {
unwatch();
});
答案 1 :(得分:1)
scope.$watch
返回取消注册函数,所以如果你这样做:
var dereg = scope.$watch('panodatas', function(newVal) {
dereg();
});
它会在运行后立即取消注册。
答案 2 :(得分:0)
您可以清除功能内的$watch
-
var listener = $scope.$watch("panodates", function () {
// ...
listener(); // Would clear the watch
});
它将被调用一次,然后观察者将被清除。