Ember.ContainerView没有更新以响应childViews.push(...)

时间:2013-01-29 12:21:28

标签: ember.js

我在1.0-pre4中遇到了奇怪的行为。我通过Ember.ContainerView向我的模板添加了{{view Ember.ContainerView viewName="dashboardView"}}。当我将视图推入其childViews数组时,DOM不会更新。这是在pre2。

这是一个jsfiddle。更奇怪的是,如果你看一下模板与childViewCount的直接输出,似乎childViews.length不会更新......或者更确切地说它不会更新(?!?)推送两个视图后立即更新。

更新

下面的答案是正确的,我的jsfiddle应该使用.pushObject,而不是.push() ...但我的原始代码实际上使用了.pushObject。相反,它看起来像是Firefox 10中的一个错误,请参阅答案评论。

更新2

向主人证实,提交了issue #1952

1 个答案:

答案 0 :(得分:4)

您需要确保使用EmberJS等效项,以便绑定工作。在您的示例中,您使用了push,其行为与pushObject几乎完全相同,但pushObject符合KVO(键值观察/绑定),因此Ember可以做到这一点

我已经更新了你的JSFiddle,以反映这一点,并且它再次为你工作:http://jsfiddle.net/RCLd7/8/但我改变的是在两个地方将push更改为pushObject。如果我们要使用push,那么Ember需要引入轮询,它不发现更改,而不是{{}自动通知1}}。

本机JavaScript方法与Ember等效方法的其他一些示例:

  • 原住民:pushObject,与Ember:push
  • 原住民:pushObject,与Ember:pop
  • 原住民:popObject,与Ember:unshift