javascript - 如何在 ember.js 中的同一路由中设置多个 Controller ?

标签 javascript ember.js

我对 ember.js 比较陌生。我有两个模型 UserRole

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 色将被选中,其他将被取消选中

jsfiddle link

最佳答案

在用户 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}}&nbsp;*{{userRole.name}}{{/each}}</p>
      <p>Available Roles:{{#each role in rolesController}}&nbsp;*{{role.name}}{{/each}}</p>
  </script>

jsfiddle http://jsfiddle.net/tXFkZ/3/

关于javascript - 如何在 ember.js 中的同一路由中设置多个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19381204/

相关文章:

javascript - 克隆记录集 - 使用 Ember Data Canary 构建

ember.js - ember 数据未找到属性名称的模型

javascript - Ember Data 在提交时不发送数据

javascript - Ember : Save persistent data from remote API to local storage

javascript - Jquery 语法错误,id 选择器上的表达式无法识别

javascript - 如何检索用户点击的图片的图片来源? (jQuery)

ember.js - 从模板访问模型

javascript - 如何在 Meteor 中使用按时间排序的两个不同模板显示两个不同的集合

javascript - 如何根据 d3.js 中的值对字典对象进行排序?

javascript - 需要有关此主题的完整示例 : QtWebKit Bridge