<input ng-model="search" type="text">
<table ng-if="search.length > 2 || search.length == 0"
ng-init="somerows = getdata()">
<tr ng-repeat="row in somerows | filter:search">...</tr>
</table>
有时它会导致更快地思考这种*视觉方式
,但这是错误的吗?
<input ng-model="search" type="text">
<table ng-if="search.length > 2 || search.length == 0"
ng-init="somerows = getdata()">
<tr ng-repeat="row in somerows | filter:search">...</tr>
</table>
有时它会导致更快地思考这种*视觉方式
,但这是错误的吗?
我认为ng-init
只有在编译元素时才会执行,所以你getdata()
只会在表格出现时被调用。这是您键入时发生的情况:
search
:显示表格,getdata()
调用getdata()
不被调用getdata()
调用getdata()
被调用getdata()
不被调用ng-init
直到表格再次隐藏并由ng-if
如果你有 10 个字符并且 CTRL+X 来剪切它们,你的搜索词是空白的但getdata()
仍然没有被调用,因为表格仍然显示并且 ng-init 没有被执行。如果您粘贴一些东西,那么getdata()
仍然不会被调用,因为该表是可见的并且ng-init
已经被执行。
我认为最好先看搜索词然后打电话getdata()
:
$scope.$watch('search', function(newValue) {
if (typeof(newValue) === "string" &&
(newValue.length == 0 || newValue.length > 2)) {
$scope.getdata();
}
}