Ember.js TypeError:无法读取属性';摧毁';未定义成员的定义
目前,我将Ember数据1.0.0-beta.14.1与Ember 1.9.1一起使用(使用Ember cli)。不知何故,我的一个收藏不再有效,因为我从旧的余烬数据版本更新 我得到了一个DirectoryModel(用于文件系统)。目录可以有子目录和文件Ember.js TypeError:无法读取属性';摧毁';未定义成员的定义,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,目前,我将Ember数据1.0.0-beta.14.1与Ember 1.9.1一起使用(使用Ember cli)。不知何故,我的一个收藏不再有效,因为我从旧的余烬数据版本更新 我得到了一个DirectoryModel(用于文件系统)。目录可以有子目录和文件 import DS from 'ember-data'; var DirectoryModel = DS.Model.extend({ ... parent: DS.belongsTo('directory', { as
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 Relationships:
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}}
不知何故,文件循环最终导致了一个错误。这看起来像一个问题,只是在我的情况下,我只是从服务器加载数据。我不明白我做错了什么,因为孩子们的关系很好。在较旧的版本中,这只起作用,但对于Ember Data 1.0.0-beta.14.1,它不起作用
我在
arrayWillChange
函数中查看了余烬代码,发现this.\u childview
只是一个空数组。但如果我在控制台中设置断点并执行this.get('content.content').toArray()
,我会看到一个包含一个元素的数组。不知何故/某个地方,数据似乎不同步…我收到了相同的错误,我还使用链接加载数据。我意外地发现,将数组包装成
files: function() {
return this.get('directory.files').map(function(file) { return file; });
}.property('directory.files.@each')
解决了这个问题
不知道它为什么会工作:)最后,它是Ember Data 1.0.0-beta.14.1中的一个bug。在下一个版本Ember Data 1.0.0-beta.15中解决了这个问题:我最近遇到了这个错误,因为在组件的布局模板中存在虚拟视图命名冲突。然而,没有更多的背景,就不可能帮助你;考虑编写一个JSB来复制错误。问题是内部的烬数据函数ArayCordNo.Debug有时被错误地触发(参见)。创建映射可能会防止在错误的时间调用此函数。无论如何,最新的灰烬数据版本解决了这个问题。