有两个属性selCountry
和searchText
。有一个监视这两个变量的手表。第一个绑定到一个选择元素,另一个是输入文本字段。
我期望的行为是:如果我更改下拉值,文本框应该清除,反之亦然。但是,由于我编写手表的方式,第一次按键(与选择元素交互后)会吞下按键。
必须有某种角度方式告诉 angular 不要处理发生在这些变量上的变量变化;但仍然允许他们的更改传播到视图......?
$scope.$watchCollection('[selCountry, searchText]', function(newValues, oldValues, scope){
console.log(newValues, oldValues, scope.selCountry, scope.searchText);
var newVal;
if(newValues[0] !== oldValues[0]) {
console.log('1');
newVal = newValues[0];
scope.searchText = '';
}
else if(newValues[1] !== oldValues[1]) {
console.log('2');
newVal = newValues[1];
scope.selCountry = '';
}
$scope.search = newVal;
var count = 0;
if(records)
records.forEach(function(o){
if(o.Country.toLowerCase().indexOf(newVal.toLowerCase())) count++;
});
$scope.matches = count;
});