我有一个搜索文本框。我把值放在上面,然后按回车键,它就会给我结果。
这是我的Html代码
<input type="text" class="filter-input" my-enter="submitFilterForm()" ng-model="vm.query" auto-focus />这是我的JS文件
$scope.$watch("vm.query", function(name) {
$scope.validationError = false;
console.log("value of query is", name);
filterStateService.updateSearchQuery(name);
});my-enter是我的自定义指令。On ng-model="query“我在JS中定义了一个$watch函数。
如果我在文本框中逐个字符输入值,则打印的$scope.query是正确的。但是如果我直接复制这个值并粘贴到textBox中,它就会变成null。当我直接在搜索框中复制和粘贴值时,$watch不工作。我如何解决这个问题。
发布于 2017-06-20 19:19:46
尝试使用ng-change而不是watch函数:
HTML:
<input type="text" class="filter-input" my-enter="submitFilterForm()" ng-model="query" ng-change="queryChanged" ge-auto-focus />JS:
function queryChanged(){
$scope.query //do something
}发布于 2017-06-20 19:31:22
如果你想使用$watch,它应该可以工作:
$scope.$watch('vm.query', function(newValue, oldValue) {
console.log('newValue:', newValue);
console.log('oldValue:', oldValue);
});https://jsfiddle.net/jbbrwcky/rufe5da1/6/
您需要将参数传递给$watch,而不是像以前那样查看$scope.query。
https://stackoverflow.com/questions/44651506
复制相似问题