嵌套在惰性一次性 ng-repeat 绑定中的绑定是不是只绑定一次?

Posted

技术标签:

【中文标题】嵌套在惰性一次性 ng-repeat 绑定中的绑定是不是只绑定一次?【英文标题】:Do bindings nested inside of a lazy one-time ng-repeat binding bind just once?嵌套在惰性一次性 ng-repeat 绑定中的绑定是否只绑定一次? 【发布时间】:2014-07-17 04:34:52 【问题描述】:

我的理解是,在以下代码中,两个绑定都会lazily bind only once

<li ng-repeat="item in ::items">::item.name</li>

但是,在以下情况下,item.name 会在每个摘要中更新吗?

<li ng-repeat="item in ::items">item.name</li>

一次性绑定效果如何嵌套ng-repeats

<li ng-repeat="item in ::items">
  <span ng-repeat="thing in item.things">thing.name</span>
</li>

【问题讨论】:

【参考方案1】:

场景一:

<li ng-repeat="item in ::items">::item.name</li>

这两个表达式都是一次性的。添加项目或更改现有项目的名称将不会反映。

演示: http://plnkr.co/edit/53r8FCmcNK4MmM6Uzxp2?p=preview

场景 2:

<li ng-repeat="item in ::items">item.name</li>

第一个表达式将是一次性绑定的。添加项目不会被反映。将反映更改现有项目的名称。

演示: http://plnkr.co/edit/52wTEb8ze2FKRDDcS9Ow?p=preview

场景 3:

<li ng-repeat="item in ::items">
  <span ng-repeat="thing in item.things">thing.name</span>
</li>

第一个表达式将是一次性绑定的。添加新项目不会被反映。添加新事物和更改现有事物的名称都会反映出来。

演示: http://plnkr.co/edit/HkObhkJtUnFEHBAzFUmN?p=preview

【讨论】:

我们可以这样做吗? - &lt;li ng-repeat="item in items"&gt;::item.name&lt;/li&gt; @Chipmunk 是的。只需玩 tasseKATT 提供的 Plnkr 演示,您就可以亲眼看看。

以上是关于嵌套在惰性一次性 ng-repeat 绑定中的绑定是不是只绑定一次?的主要内容,如果未能解决你的问题,请参考以下文章

ng-repeat为啥不能遍历重复的东西

ng-model 绑定到 ng-repeat Angularjs 中的元素

AngularJS——创建自定义数据绑定和 ng-repeat

惰性符号绑定失败 Ruby Racer

extension.binding 的惰性要求没有设置绑定字段

Kendo UI:Kendo 网格的惰性绑定