首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制更新ng-init?

如何强制更新ng-init?
EN

Stack Overflow用户
提问于 2018-05-02 15:09:26
回答 2查看 2.7K关注 0票数 3

我发现ng-init在rowIndex更新后不会更新。

代码语言:javascript
复制
<div ng-init="item = getItem(rowIndex)">
   {{ item.Name }} 
</div>

项目在rowIndex更改后不会更新(即使使用$timeout进行了更改)

是否有其他指令允许避免使用以下脏技巧:

代码语言:javascript
复制
<div ng-repeat="item in [getItem(rowIndex)]">
   {{ item.Name }} 
</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-02 20:36:37

另一种方法是在伪属性中设置变量:

代码语言:javascript
复制
<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参考

票数 8
EN

Stack Overflow用户

发布于 2018-05-02 15:35:36

ngInit不更新。这是一次指令。您应该从大括号内调用函数,因为您希望监视rowIndex的更改。

代码语言:javascript
复制
<div>
  {{ getItem(rowIndex).Name }}
</div>

这可能会影响大列表上的性能,因为每个摘要周期都会调用getItem,但它很容易阅读。

https://plnkr.co/edit/cZ2SG6nf2SufdAWe1ye7?p=preview

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50137940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档