我的模板中有类似以下内容:
<input name="searchText" placeholder="Search" data-type="search"
ng-model="searchText"
ng-change="searchRecords()"
ng-keyup="onKeyUp()">
当我转到该模板时,searchRecords()
将调用函数(触发ng-change)。我只想searchRecords()
在我开始输入时被叫(changesearchText
将触发ng-change
)。现在,它通过控制器初始化被触发。
我尝试在控制器中将设置searchText
为null
,''
但还是一样。
这是设计使然,还是我缺少了某些东西?
编辑:
我意识到这段代码触发了我的searchRecords()
:
$scope.$watchGroup(['daysBefore', 'daysAhead'], function (newValues, oldValues, scope) { ... }
编辑:
我删除了ng-change
并添加了以下内容:
$scope.$watch('searchText', function (newValue, oldValue) {
$scope.searchRecords();
});
无需任何更改即可$scope.searchText
在控制器初始化时执行此代码。
我在Google网上论坛找到了关于该主题的话题-https://groups.google.com/forum/#! topic/ angular/ uXldMqsQvRw
手表在注册时自动触发(并通过$ evalAsync异步触发),这将初始化手表并让您的代码知道初始值是多少。
如果这是不希望的,则可以将此检查放入您的保存方法中:
函数save(newVal,oldVal){如果(newVal === oldVal)返回;//在这里做事}
是的,我想摆脱这种代码,但显然我做不到
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句