Ember.js 基于一组复选框获取值数组

Ember.js 基于一组复选框获取值数组,ember.js,Ember.js,我对Ember非常陌生,在使用JS/jQuery之前,我已经构建过几次类似的东西,但2小时后,我似乎无法以“Ember”的方式取得任何进展 我有一组从权限模型中提取的权限: [ { id : 1, permission : "Can Eat Cake", description : "User is allowed to eat cake." }, { id : 2, permission : "Can Fly", descriptio

我对Ember非常陌生,在使用JS/jQuery之前,我已经构建过几次类似的东西,但2小时后,我似乎无法以“Ember”的方式取得任何进展

我有一组从权限模型中提取的权限:

[
  {
    id : 1,
    permission : "Can Eat Cake",
    description : "User is allowed to eat cake."
  },
  {
    id : 2,
    permission : "Can Fly",
    description : "User is allowed to fly."
  },
  ...
]
我希望允许用户检查适用于特定角色的所有内容:

// RoleCreate.hbs
{{#each model.permissions}}
  {{input type="checkbox" name="rolePerm" checked=permChecked}} {{permission}}<br />
{{/each}}
我只是不知道如何将每个复选框的值获取到一个父数组,该数组可以发送到服务器以创建新角色。。。我已经设法弄明白了如何让观察者在选中/取消选中时触发,但无论我怎么做,似乎都无法获得复选框的值

// RoleCreateController
rolePermissionMgr : function() {

  console.log( "Permission Checkbox Changed!" );

}.observes( 'model.permissions.@each.permChecked' )

同样,对于Ember来说,我是个新手,所以我肯定我做了一件或多件不正确的事情。

你几乎做到了。我将复选框值指定给模型。我只是在触发观察者时检查每个复选框值,并使用ember的数组方法提取权限

{{{#content.permissions中的每个项目}
  • {{input type=“checkbox”checked=item.value}{{{item.permission}}
  • {{/每个}} App.IndexRoute=Ember.Route.extend({ 模型:函数(){ 返回{ roleName:“Blessan”, 权限:[{ id:1, 许可:“可以吃蛋糕”, 描述:“用户可以吃蛋糕。” },{ id:2, 权限:“可以飞”, 描述:“允许用户飞行。” }] }; } }); App.IndexController=Em.ObjectController.extend({ permissionChanged:函数(){ var obj={ roleName:this.get('content.roleName'), 权限:this.get('content.permissions') .filterBy('value',true.).mapBy('id'); }; 控制台信息(obj); }.observes('content.permissions.@each.value') });
    // RoleCreateController
    rolePermissionMgr : function() {
    
      console.log( "Permission Checkbox Changed!" );
    
    }.observes( 'model.permissions.@each.permChecked' )
    
    {{#each item in content.permissions}}
      <li>{{input type="checkbox" checked=item.value}} {{item.permission}}</li>
    {{/each}}
    
    App.IndexRoute = Ember.Route.extend({
      model: function() {
        return {
          roleName: 'Blessan',
          permissions: [{
            id : 1,
            permission : "Can Eat Cake",
            description : "User is allowed to eat cake."
          },{
            id : 2,
            permission : "Can Fly",
            description : "User is allowed to fly."
          }]
        };
      }
    });
    
    App.IndexController = Em.ObjectController.extend({
      permissionChanged: function() {
        var obj = {
          roleName: this.get('content.roleName'),
          permissions: this.get('content.permissions')
                  .filterBy('value', true).mapBy('id');
        };
        console.info(obj);
      }.observes('content.permissions.@each.value')
    });