Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Ember.ContainerView未响应ChildView.push更新(…)_Ember.js - Fatal编程技术网

Ember.js Ember.ContainerView未响应ChildView.push更新(…)

Ember.js Ember.ContainerView未响应ChildView.push更新(…),ember.js,Ember.js,我在1.0-pre4中有奇怪的行为。我通过{view Ember.ContainerView viewName=“dashboardView”}将Ember.ContainerView添加到我的模板中。当我将视图推入其childview数组时,DOM不会更新。这在pre2中起作用 这是一个例子。更奇怪的是,如果您查看模板与childViewCount的直接输出,它似乎不更新。childViews.length不更新……或者更确切地说,它会更新,也不会更新(?!?),而childViewCount

我在1.0-pre4中有奇怪的行为。我通过
{view Ember.ContainerView viewName=“dashboardView”}
Ember.ContainerView
添加到我的模板中。当我将视图推入其
childview
数组时,DOM不会更新。这在pre2中起作用

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

更新 下面的答案是正确的,我的JSFIDLE应该使用
.pushObject
,而不是
.push()
…但我的原始代码实际使用了
.pushObject
。相反,它看起来像Firefox10中的一个bug,请参见答案上的注释

更新2
根据master,Field进行确认。

您需要确保使用的是等效的EmberJS,以便绑定正常工作。在您的示例中,您使用了
push
,它的行为几乎与
pushObject
完全相同,但是
pushObject
符合KVO(键值观察/绑定),因此Ember可以完成它的任务

我已经更新了您的JSFIDLE以反映这一点,它再次为您工作:但我所做的更改是在两个位置将
push
更改为
pushObject
。如果我们要使用
push
,那么Ember将需要引入轮询,而不是通过
pushObject
自动通知发现更改

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

  • 原生:
    push
    ,与余烬:
    pushObject
  • 本机:
    pop
    ,与余烬:
    popObject
  • 本机:
    unshift
    ,与余烬:
    unshiftObject

您需要确保使用的是等效的EmberJS,以便绑定能够正常工作。在您的示例中,您使用了
push
,它的行为几乎与
pushObject
完全相同,但是
pushObject
符合KVO(键值观察/绑定),因此Ember可以完成它的任务

我已经更新了您的JSFIDLE以反映这一点,它再次为您工作:但我所做的更改是在两个位置将
push
更改为
pushObject
。如果我们要使用
push
,那么Ember将需要引入轮询,而不是通过
pushObject
自动通知发现更改

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

  • 原生:
    push
    ,与余烬:
    pushObject
  • 本机:
    pop
    ,与余烬:
    popObject
  • 本机:
    unshift
    ,与余烬:
    unshiftObject

    • Aw-crap…好吧:你说得对,
      pushObject
      解决了我小提琴的问题。但我回头看了看我的代码,我用的是pushObject。。。现在我发现Firefox 10不起作用——你更新的提琴在IE8中起作用,但在FF10中不起作用(长度更新正确,但DOM中没有新的div)。不支持FF10吗?我应该提交一个bug吗?同样,这在pre2.Minor更新中也适用,在ContainerView上添加显式的
      .rerender()
      调用可以使ChildView在FF10中正确呈现,尽管显然这不是必需的。我明天左右会更新到master,看看它是否仍然存在,如果仍然存在,我会提交一个bug。这看起来太奇怪了!是的,如果从master更新后仍然存在bug,我想我会提交一个bug。与JavaScript的
      splice
      相当的余烬是(尽管签名略有不同:它需要插入一个对象数组,而不是一个可变长度的参数列表)。但在很多情况下,这可能是更好的选择。噢,废话……好吧:你说得对,
      pushObject
      解决了我小提琴的问题。但我回头看了看我的代码,我用的是pushObject。。。现在我发现Firefox 10不起作用——你更新的提琴在IE8中起作用,但在FF10中不起作用(长度更新正确,但DOM中没有新的div)。不支持FF10吗?我应该提交一个bug吗?同样,这在pre2.Minor更新中也适用,在ContainerView上添加显式的
      .rerender()
      调用可以使ChildView在FF10中正确呈现,尽管显然这不是必需的。我明天左右会更新到master,看看它是否仍然存在,如果仍然存在,我会提交一个bug。这看起来太奇怪了!是的,如果从master更新后仍然存在bug,我想我会提交一个bug。与JavaScript的
      splice
      相当的余烬是(尽管签名略有不同:它需要插入一个对象数组,而不是一个可变长度的参数列表)。但在许多情况下,这可能是更好的选择。