类型错误: 无法读取未定义的属性'destroy' - 余烬



我目前使用Ember Data 1.0.0-beta.14.1和Ember 1.9.1(使用Ember-cli)。不知何故,我的一个集合不再起作用,因为我从较旧的 ember 数据版本更新。

我有一个目录模型(用于文件系统)。目录可以有子目录和文件。

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 有一个序列化程序来加载哈希许多相关:

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}}

不知何故,文件循环最终导致错误。看起来像 arrayWillChange 中的问题"无法调用未定义的方法'销毁'",只有在我的情况下,我只是从服务器加载数据。我不明白我做错了什么,因为孩子关系确实很好。在旧版本中,这只是有效的,但是对于Ember Data 1.0.0-beta.14.1,它不会...


我查看了arrayWillChange函数的余烬代码,发现this._childViews只是一个空数组。但是,如果我设置断点并在控制台中执行this.get('content.content').toArray(),则会看到一个包含一个元素的数组。不知何故/某处似乎数据不同步......

最后,

它是Ember Data 1.0.0-beta.14.1中的一个错误。它在下一个版本中解决了,Ember Data 1.0.0-beta.15:https://github.com/emberjs/data/issues/2662

我遇到了同样的错误,我也使用链接来加载数据。我意外发现的是将数组包装成类似的东西

files: function() {
  return this.get('directory.files').map(function(file) { return file; });
}.property('directory.files.@each')

解决了问题。

不知道为什么它:)工作

最新更新