Ember.js:如何以正确的方式勾选模型?

时间:2014-06-12 03:16:14

标签: javascript ember.js

我尝试使用#link-to迭代所有角色。问题是第一个记录在转换时工作正常,但是当我尝试转换到其他记录时,复选框不起作用,并且默认检查是从第一个记录继承的。

模板:templates/roles.hbs

<ul>
    {{#each role in controller}}
        {{#if role.name}}
            <li>
                {{#link-to 'roles.show' role}}
                    {{role.name}}
                {{/link-to}}
            </li>
        {{/if}}
    {{/each}}           
</ul>

模板:templates/roles/show.hbs

{{role-form role=model}}

这是component/role-form.hbs。 我尝试{{module.accessRights.read}}来获取值,但它仅适用于第一行复选框,当我转换到其他记录时,它会抛出错误:TypeError: element is null

{{#each module in role.modules}}
    {{module.name}}

    {{view Ember.Checkbox checkedBinding='module.accessRights.read'}}
    {{view Ember.Checkbox checkedBinding='module.accessRights.write'}}
    {{view Ember.Checkbox checkedBinding='module.accessRights.update'}}
    {{view Ember.Checkbox checkedBinding='module.accessRights.delete'}}
{{/each}}

路线:routes/roles/show.js

export default Ember.Route.extend({
    model: function(param) {
        return this.store.find('role', param.id);
    }
});

型号:

// role.js
export default DS.Model.extend({
    name: DS.attr('string'),
    modules: DS.hasMany('module', {embedded: 'always'})
});

// module.js
export default DS.Model.extend({
    name: DS.attr('string'),
    accessRights: DS.belongsTo('access', {embedded: 'always'})
});

// access.js
export default DS.Model.extend({
    write: DS.attr('boolean'),
    read: DS.attr('boolean'),
    update: DS.attr('boolean'),
    delete: DS.attr('boolean')
});

来自后端的响应正确处理了我的模型。我是否需要在每个link-to上挂钩模型?我尝试使用setupController来挂钩模型,但它不起作用。

0 个答案:

没有答案