目前我有一个附加到模型的文本输入,其中包含$scope.watch
观察模型的语句。这都用于实现一种自动完成/预输入功能。
<!-- HTML -->
<input type="text" ng-model="search.mySearchText">
// JS
var deregister = $scope.$watch('search.mySearchText', doSearch);
function doSearch() {
mySearchService.executeSearch(search.mySearchText)
.then(function(res) {
// do something with the data
});
}
这工作正常。但是,偶尔在我的.then
函数中我想对search.mySearchText
. 显然这会导致观察者再次被解雇,但我不希望这样。
我希望做的是找到一种方法来抑制$watch
下次射击。也许通过某种方式告诉 Angular 那个特定的被监视模型属性不再是脏的?
我尝试$watch
通过在适当的时间取消/重新注册手表来删除它,但这也不起作用。
function doSearch() {
mySearchService.executeSearch(search.mySearchText)
.then(function(res) {
deregister(); // shut off the watch
search.mySearchText = 'some new string'; // manipulate the model property that I don't want to cause a search
deregister = $scope.$watch('search.mySearchText', doSearch);
});
}
但是,这并没有像我预期的那样阻止事件触发,这就是为什么我现在正在寻找一种方法来抑制事件。