javascript - Emberjs 数组 Controller

标签 javascript ember.js arraycollection

我的路线是:

export default Ember.Route.extend({
    model: function (params) {
        var blocks = this.store.find('block', {'objectId': 777});
        this.controllerFor("blocks").set('model', blocks);
        return Ember.RSVP.hash({
            object: this.store.find('object', params.id),
            blocks: blocks
        });
        //return this.store.find('object', params.id);
    }
});

我的 Controller 是:

export default Ember.ArrayController.extend({
    init: function(e){
        alert('jere');
    }
});

初始化函数中的警报有效,但接下来我收到错误:

Error while processing route: objects.bc.index Cannot read property 'length' of null TypeError: Cannot read property 'length' of null

通过 ajax 获取模型集合并使用自定义数组 Controller 在模板中显示它的正确方法是什么?

最佳答案

这段代码有很多问题。首先,ArrayController 假设它的模型是一个数组,而您的 model 钩子(Hook)返回一个散列。其次,您的 this.controllerFor("blocks").set('model', blocks) 调用尝试将 Controller 的模型设置为 promise ,这是无用的。您不会像这样在 model Hook 中设置 Controller 的模型。您可以通过返回模型来设置它,然后通过您的(或默认)setupController Hook 将模型安装(在解析后)到 Controller 中。

您不应该使用 ArrayController,它很快就会被弃用,而应该使用普通的旧 Controller 。此 Controller 的模型将是从 model Hook 返回的哈希值。您需要使用 {{model}} 在模板中明确访问它。

所以你想要这样的东西:

// route.js
export default Ember.Route.extend({
    model: function(params) {
        var blocks = this.store.find('block', {'objectId': 777});
        return Ember.RSVP.hash({
            object: this.store.find('object', params.id),
            blocks: blocks
        });
    }
});

// controller.js
export default Ember.Controller.extend({
    init: function(e) {
        alert('jere');
    }
});

在你的模板中,而不是

{{#each controller}}
    blockProp is {{blockProp}}

正如您现在可能正在做的那样,使用

{{#each block in model.blocks}}
    blockProp is {{block.blockProp}}
{{/each}}
And objectProp is {{model.object.objectProp}}

关于javascript - Emberjs 数组 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442076/

相关文章:

ember.js - 将 ember.js .hbs 模板渲染为字符串

diff - Symfony 3 - 2 arraycollection 之间的区别

arrays - 将 Vector.<SomeType> 转换为数组?

javascript - 使用 AngularJS 更改 URL 中的参数

javascript - Ember.js 中单个资源中的多个动态段

ember.js - 将二维数组添加到 Ember.View 的内容数组中

forms - symfony2 形成多选与 arraycollection

javascript - jquery .slideUp 多次调用时表现奇怪

javascript - 加载函数中的phaser js undefined variable

javascript - 在 Electron (原子壳层)中使用 'before-quit' 事件