2015-01-15 45 views
1

我使用Ember Data 1.0.0-beta.14.1和Ember 1.9.1(使用Ember-cli)。不知怎麼的,我的一個集合不再工作了,因爲我從一個較舊的支持數據版本更新。TypeError:無法讀取未定義的屬性'destroy' - Ember

我有一個DirectoryModel(用於文件系統)。目錄可以有子目錄和文件。

import DS from 'ember-data'; 

var DirectoryModel = DS.Model.extend({ 
    ... 

    parent: DS.belongsTo('directory', { async: true, inverse: 'children' }), 

    children: DS.hasMany('directory', { async: true, readOnly: true, inverse: 'parent' }), 
    files: DS.hasMany('file', { async: true, readOnly: true }) 
}); 

A獲得了串行加載hashMany releationships:

export default ApplicationSerializer.extend({ 
    normalizePayload: function(payload) { 
     payload.directories.forEach(function(directory) { 
      directory.links = { 
       children: '/link-to-server'), 
       files: 'link-to-server') 
      }; 
     }); 

     return this._super.apply(this,arguments); 
    } 
}); 

我的觀點:

//WORKS GREAT 
{{#each directory in children itemController="file-directory"}} 
    ... 
{{/each}} 

CREATES ERRORS 
{{#each file in files }} 
    ... 
{{/each}} 

不知怎麼的文件循環結束了一個錯誤。它看起來像問題"Cannot call method 'destroy' of undefined" in arrayWillChange,只在我的情況下,我只是從服務器加載數據。我不明白我做錯了什麼,因爲孩子關係確實很好。在舊版本中這只是工作,但與Ember數據1.0.0-beta.14.1它不...


我看着在arrayWillChange功能灰燼代碼,看到this._childViews只是一個空陣列。但是如果我在控制檯中設置了一個斷點並執行了this.get('content.content').toArray(),我看到了一個包含一個元素的數組。不知何故/某處似乎數據不同步...

+0

我最近因爲在組件的佈局模板中出現虛擬視圖命名衝突而出現此錯誤。但是,沒有更多的上下文,它不可能幫助你;考慮寫一個jsbin再現錯誤。 – slindberg 2015-01-15 19:36:57

回答

1

我得到相同的錯誤,我也使用鏈接加載數據。我不小心發現的是,包裝陣列在類似

files: function() { 
    return this.get('directory.files').map(function(file) { return file; }); 
}.property('[email protected]') 

解決了這個問題。

不知道爲什麼它的工作原理:)

+1

問題是內部Ember數據函數arrayContentDidChange有時被錯誤觸發(請參閱https://github.com/emberjs/data/pull/2723)。創建映射可能會阻止在錯誤的時間調用此函數。無論如何,最新的Ember數據版本修復了問題。 – 2015-02-17 07:52:31

相關問題