0

首先,当谈到 JS 中的 OOP 时,我完全是菜鸟,这对我来说是新的,所以把我当菜鸟一样对待。

我正在构建我的第一个 ember.js 应用程序,但我被卡住了(不是第一次,但我自己会被卡住,虽然这很困难)。

我有两个模型:表单条目

条目当然与表单存在(一对多)关系,因此每个表单可以具有尽可能多的属性。

表单属性:

id           : DS.attr( 'number' ),
title        : DS.attr( 'string' ),
views        : DS.attr( 'number' ),
conversion   : DS.attr( 'number' ),
entries      : DS.hasMany( 'entry' )

入口属性:

id       : DS.attr( 'number' ),
parent_id: DS.belongsTo( 'form' )

现在,我有表单路由,可以在表格视图中显示所有表单,每个表格行都有一些信息,如表单 ID、名称等,效果很好。

我想做的是显示每个表单的条目数。我想我应该通过控制器来做到这一点,所以现在这是我的控制器:

// Form controller
App.FormController = Ember.ObjectController.extend({

    entriescount: function() {

        var entries = this.get( 'store').find( 'entry' );
        return entries.filterBy( 'parent_id', this.get( 'id' ) ).get( 'length' );

    }.property( 'entries.@each.parent_id')

});

现在由于某种原因,当我{{entriescount}}使用{{#each}}循环中使用时,它什么也不返回。它也不会在单一形式的路线中返回任何内容。请注意,在这两种情况下,例如 {{title}} 都有效。我想知道,我是否通过使用控制器来正确地进行此操作,以及如何让控制器输出数据。

谢谢

4

1 回答 1

0

通过表单上的计算属性来做到这一点。

类似于下面的条目长度并将其用于显示:

App.YourForm = App.YourForm.extend
({
    entriesLength: function () {
        return this.get('entries').get('length');
    }.property('entries')
});

这也是你如何设置与你的装置中的条目的关系:

App.Form.FIXTURES = [
    {
        id          : 1,
        form_id     : 1,
        title       : 'Order a Pizza',
        views       : 2,
        conversion  : 0,
        entries: [3,4]
    },
于 2013-11-02T21:51:18.200 回答