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