Ember.js &引用;无法调用方法';摧毁';“未定义”的定义;一成不变
我有一个我认为非常标准的数组/模板关系设置,但是当我将一个新项推入数组时,我得到了上面提到的Ember.js &引用;无法调用方法';摧毁';“未定义”的定义;一成不变,ember.js,Ember.js,我有一个我认为非常标准的数组/模板关系设置,但是当我将一个新项推入数组时,我得到了上面提到的无法调用方法'destroy'的undefined错误,该方法位于Ember source的arrayWillChange方法中: for (idx = start + removedCount - 1; idx >= start; idx--) { childView = childViews[idx]; if (removingAll) { childView.removedFromDO
无法调用方法'destroy'的undefined
错误,该方法位于Ember source的arrayWillChange
方法中:
for (idx = start + removedCount - 1; idx >= start; idx--) {
childView = childViews[idx];
if (removingAll) { childView.removedFromDOM = true; }
childView.destroy(); <-- childView is undefined
}
for(idx=start+removedCount-1;idx>=start;idx--){
childView=childView[idx];
if(removingAll){childView.removedFromDOM=true;}
childView.destroy();编辑:
您正在调用array.push
而不是array.pushObject
——后者是一个支持绑定的Ember.js方法,这意味着它将自动为您更新绑定。Handlebar模板帮助程序{{{each filters}
是与控制器的筛选器数组的绑定,模板需要知道何时更新基础数组。push
不会告诉绑定要更新,但pushObject
会告诉绑定要更新
下面是一个工作示例(我所做的只是将push更改为pushObject):
这是一个非常常见的错误——通常,我发现如果我的模板与底层对象不同步,那是因为绑定出了问题,所以我从这里开始寻找
结束编辑
我认为您不应该直接设置removedFromDOM
——尝试使用childView.remove()
,然后使用destroy()
我不确定上下文是什么,但您是否查看过或?这两个视图都支持子视图数组,并且可能会以更少的代码更可靠地完成您希望完成的任务
抱歉,我没有指定原始问题中的代码来自Ember源代码。我没有直接调用removedFromDOM
。引发的错误来自Ember源代码。因为我所做的非常简单,我无法理解Ember为什么不喜欢它。我将更新我的问题以使其更清楚。我更新了我的答案--你'我们使用了push
而不是pushObject
。你能看看使用pushObject是否有效吗?这就解决了问题。我不知道这是一种特定于余烬的方法。我以为这是用于推送JS对象的,因为我推送字符串,所以我认为我不需要它。很高兴知道,谢谢。