kau*_*kb9 6 javascript ember.js
我对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')
});
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我需要为一个用户分配和/或删除角色.为此,我需要循环并比较两个控制器 - 角色(来自用户有角色)与所有可用角色
我通过这样做来获得分配给用户的角色 user/edit template
Assigned Roles: {{#each role in roles}}*{{role.name}}{{/each}}
Run Code Online (Sandbox Code Playgroud)
但是,如何在同一路线中拥有另一个RolesController,它将拥有独立于用户的所有可用角色?如果我在UserEditRoute中执行一个setupController,它将为RolesController创建一个名称冲突.
我的目标是使用复选框列出所有角色.将检查已分配给用户的角色,并取消选中其他角色
小智 15
在User控制器中,您可以设置needs属性以告知ember有线角色控制器.
您还应该为此控制器分配模型,因此您设置了UsersEditRoute的setupController挂钩,并且您将列出您的角色
App.UsersEditRoute = Ember.Route.extend({
setupController: function(controller,model) {
controller.set('model', model);//UsersEditController
this.controllerFor('roles').set('model',this.store.find('role'));
}
});
Run Code Online (Sandbox Code Playgroud)
控制器
App.UsersEditController = Em.ObjectController.extend({
needs: "roles",
rolesController: Ember.computed.alias("controllers.roles")
});
App.RolesController = Em.ArrayController.extend({});
Run Code Online (Sandbox Code Playgroud)
最后是模板
<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>
Run Code Online (Sandbox Code Playgroud)
jsfiddle http://jsfiddle.net/tXFkZ/3/
| 归档时间: |
|
| 查看次数: |
3592 次 |
| 最近记录: |