我想在titleChanged变量中附加一个监听器。 我试过这种方式,但它抛出了这个错误
TypeError:this。$ watch不是函数
var titleChanged = false;
function titleTrue() {
titleChanged = true;
};
$scope.$watch('title',function(newValue, oldValue) {
if (newValue !== oldValue) {
$timeout(titleTrue(), 5000)
};
});
this.$watch('titleChanged', function(newValue){
if(newValue === true) {
updateNote();
titleChanged = false;
};
});
更新的代码另一个apprach
var titleChanged = false;
$scope.$watch('title',function(newValue, oldValue) {
if (newValue !== oldValue) {
titleChanged = true;
}
});
while (true) {
$timeout(checkForChangeAndSave, 3000);
};
function checkForChangeAndSave() {
if(titleChanged) {
updateNote();
titleChanged = false;
}
}
function updateNote() {
notesService.update($stateParams.id, {title: $scope.title});
notesService.getAll();
};
答案 0 :(得分:3)
this
最有可能引用您案例中的控制器对象(除非您手动绑定到另一个值(或者您已将this.$watch
设置为另一个值功能范围))。它没有$watch
方法。
$scope
有这样的方法。如果你想查看本地非暴露变量的值,你可以这样做:
$scope.$watch(function () { return titleChanged; }, function (v) {
console.log(v);
});