我发现ng-init在rowIndex更新后不会更新。
<div ng-init="item = getItem(rowIndex)">
{{ item.Name }}
</div>项目在rowIndex更改后不会更新(即使使用$timeout进行了更改)
是否有其他指令允许避免使用以下脏技巧:
<div ng-repeat="item in [getItem(rowIndex)]">
{{ item.Name }}
</div>发布于 2018-05-02 20:36:37
另一种方法是在伪属性中设置变量:
<div x="{{item = getItem(rowIndex)}}">
{{ item.Name }} {{item.Value}}
</div>在每个摘要周期中,item的值将被更新。
在item具有多个属性的情况下,只需要调用一次getItem函数。
请记住,当item更改时,控制器只更新rowIndex值一次将更加有效,而不是在每个摘要周期调用getItem函数。
避免使用ng-init
避免使用ng-init。它混淆了模型和视图,使代码难以理解、测试、调试和维护。相反,在控制器中初始化模型。
来自“文件”:
ngInit 可以滥用此指令向模板中添加不必要数量的逻辑。
ngInit只有少数几个适当的用途,如下面的演示所示,用于别名ngRepeat的特殊属性;以及通过服务器端脚本注入数据。除了这几种情况之外,您应该使用控制器而不是ngInit来初始化作用域上的值。- AngularJS ng-init指令API参考
发布于 2018-05-02 15:35:36
ngInit不更新。这是一次指令。您应该从大括号内调用函数,因为您希望监视rowIndex的更改。
<div>
{{ getItem(rowIndex).Name }}
</div>这可能会影响大列表上的性能,因为每个摘要周期都会调用getItem,但它很容易阅读。
https://stackoverflow.com/questions/50137940
复制相似问题