Angularjs 安古拉鲁斯:这种书写方式错了吗? ...
有时,这种*视觉方式会加快思考速度Angularjs 安古拉鲁斯:这种书写方式错了吗? ...,angularjs,binding,angular-ng-if,angularjs-ng-init,Angularjs,Binding,Angular Ng If,Angularjs Ng Init,有时,这种*视觉方式会加快思考速度 但这是错的吗 我认为nginit只有在编译元素时才会执行,因此只有在表出现时才会调用getdata()。以下是键入时发生的情况: 空白search:显示表格,调用getdata() 类型“a”:表是隐藏的,getdata()未调用 类型“b”:表仍处于隐藏状态,getdata()未调用 类型“c”:显示表格,调用getdata() 类型“d”:仍然显示表,因此不会调用getdata() 以此类推,ng init将不会执行,直到该表再次隐藏并由ng if 如果您
但这是错的吗 我认为
nginit
只有在编译元素时才会执行,因此只有在表出现时才会调用getdata()
。以下是键入时发生的情况:
search
:显示表格,调用getdata()
getdata()
未调用getdata()
未调用getdata()
getdata()
ng init
将不会执行,直到该表再次隐藏并由ng if
getdata()
,因为仍会显示该表,并且不会执行ng init。如果粘贴了某些内容,则仍然不会调用getdata()
,因为该表是可见的,并且已经执行了ng init
我认为最好观察搜索词并调用getdata()
,然后:
<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>
退房当if添加或删除元素时,会调用ng init,但如果您开始键入,则仅当您键入第三个字符时才会调用它,而不是在第三个字符之后,
ng if
实际添加或删除关联的DOM对象,这就是为什么ng init
直到第三个字符才执行的原因,因为它实际上还不存在。
$scope.$watch('search', function(newValue) {
if (typeof(newValue) === "string" &&
(newValue.length == 0 || newValue.length > 2)) {
$scope.getdata();
}
}