我对 ember.js 比较陌生。我有两个模型 User
和 Role
App.User = DS.Model.extend({
name: DS.attr('string'),
roles: DS.hasMany('role')
});
App.Role = DS.Model.extend({
name: DS.attr('string')
});
在我的应用程序中,我需要为一个用户分配和/或删除 Angular 色。为此,我需要循环并比较两个 Controller - Angular 色(来自用户有 Angular 色)与所有可用 Angular 色
我通过在 user/edit 模板
中执行此操作来获得分配给用户的 Angular 色
Assigned Roles: {{#each role in roles}}*{{role.name}}{{/each}}
但是我如何在同一路由中拥有另一个 RolesController,它会拥有独立于用户的所有可用 Angular 色?如果我在 UserEditRoute 中执行 setupController,将会为 RolesController 创建名称冲突。
我的目标是用复选框列出所有 Angular 色。已分配给用户的 Angular 色将被选中,其他将被取消选中
最佳答案
在用户 Controller 中,您可以设置 needs 属性来告诉 ember 连接 Angular 色 Controller 。
你还应该为这个 Controller 分配模型,所以你设置了 UsersEditRoute 的 setupController Hook ,你列出了你的 Angular 色
App.UsersEditRoute = Ember.Route.extend({
setupController: function(controller,model) {
controller.set('model', model);//UsersEditController
this.controllerFor('roles').set('model',this.store.find('role'));
}
});
Controller
App.UsersEditController = Em.ObjectController.extend({
needs: "roles",
rolesController: Ember.computed.alias("controllers.roles")
});
App.RolesController = Em.ArrayController.extend({});
最后是模板
<script type="text/x-handlebars" data-template-name="users/edit">
<h3>User Edit</h3>
<p>Name: {{name}}</p>
<p>Assigned Roles: {{#each userRole in roles}} *{{userRole.name}}{{/each}}</p>
<p>Available Roles:{{#each role in rolesController}} *{{role.name}}{{/each}}</p>
</script>
jsfiddle http://jsfiddle.net/tXFkZ/3/
关于javascript - 如何在 ember.js 中的同一路由中设置多个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19381204/