TypeError: Cannot read property 'destroy' of undefined - Ember
TypeError: Cannot read property 'destroy' of undefined - Ember
我目前使用 Ember Data 1.0.0-beta.14.1 和 Ember 1.9.1(Ember-cli)。自从我从旧的 ember 数据版本更新以来,我的 collections 中的一个以某种方式不再工作。
我得到了一个 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 关系:
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,只是在我的情况下,我只是从服务器加载数据。我不明白我做错了什么,因为 children-relation 确实工作得很好。在旧版本中这只是工作,但对于 Ember Data 1.0.0-beta.14.1 它不...
我查看了 arrayWillChange
函数中的 ember 代码,发现 this._childViews
只是一个空数组。但是,如果我设置断点并在我的控制台中执行 this.get('content.content').toArray()
,我会看到一个只有一个元素的数组。 Somehow/somewhere 好像数据不同步...
我遇到了同样的错误,我也使用链接来加载数据。我无意中发现的是将数组包装成
files: function() {
return this.get('directory.files').map(function(file) { return file; });
}.property('directory.files.@each')
问题已解决。
不知道它为什么有效:)
最终它是 Ember Data 1.0.0-beta.14.1 中的一个错误。下个版本解决了,Ember Data 1.0.0-beta.15: https://github.com/emberjs/data/issues/2662
我目前使用 Ember Data 1.0.0-beta.14.1 和 Ember 1.9.1(Ember-cli)。自从我从旧的 ember 数据版本更新以来,我的 collections 中的一个以某种方式不再工作。
我得到了一个 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 关系:
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,只是在我的情况下,我只是从服务器加载数据。我不明白我做错了什么,因为 children-relation 确实工作得很好。在旧版本中这只是工作,但对于 Ember Data 1.0.0-beta.14.1 它不...
我查看了 arrayWillChange
函数中的 ember 代码,发现 this._childViews
只是一个空数组。但是,如果我设置断点并在我的控制台中执行 this.get('content.content').toArray()
,我会看到一个只有一个元素的数组。 Somehow/somewhere 好像数据不同步...
我遇到了同样的错误,我也使用链接来加载数据。我无意中发现的是将数组包装成
files: function() {
return this.get('directory.files').map(function(file) { return file; });
}.property('directory.files.@each')
问题已解决。
不知道它为什么有效:)
最终它是 Ember Data 1.0.0-beta.14.1 中的一个错误。下个版本解决了,Ember Data 1.0.0-beta.15: https://github.com/emberjs/data/issues/2662