我有一个搜索文本框。我正在投入价值并按下输入键,它给了我结果。
这是我的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是我的自定义指令。在ng-model =&#34;查询&#34;我在JS中定义了一个$ watch函数。
如果我逐个字符地输入文本框中的值,则打印$ scope.query正确。但是,如果我直接复制值并粘贴到textBox中,它将变为null。当我在搜索框中直接复制并粘贴值时,$ watch无效。我该如何解决这个问题。
答案 0 :(得分:1)
尝试使用ng-change而不是看功能:
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
}
答案 1 :(得分:0)
如果你想使用$ 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。