<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>
有时它会更快地思考这种*视觉方式 但这是错的吗?
答案 0 :(得分:2)
我认为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();
}
}