Ember.js Ember复选框获取回调中元素的名称

Ember.js Ember复选框获取回调中元素的名称,ember.js,Ember.js,如果我定义一个复选框,如下所示: {{input type="checkbox" name="email" checked=controller.isEmailChecked}} Email 在回调控制器中。isEmailedChecked,定义为: isEmailChecked: function(key, value) { ... } 如何获取名称(“电子邮件”)的值 我的控制器负责显示多个复选框,因此我不想写这样的行: {{input type="checkbox" name

如果我定义一个复选框,如下所示:

  {{input type="checkbox" name="email" checked=controller.isEmailChecked}} Email
在回调
控制器中。isEmailedChecked
,定义为:

isEmailChecked: function(key, value) {
 ...
}
如何获取
名称
(“电子邮件”)的值

我的控制器负责显示多个复选框,因此我不想写这样的行:

  {{input type="checkbox" name="x" checked=controller.isXChecked}} X
  {{input type="checkbox" name="y" checked=controller.isYChecked}} Y
{{named-component name="email" action=isChecked}}
只是为了做:

ixXChecked: function(key, value) {
  // Set or Get
  this.set('x', value);
  this.get('x');
}
ixYChecked: function(key, value) {
  // Set or Get
  this.set('y', value);
  this.get('y');
}
谁能给我指一下这些文件吗

编辑:同样适用于按钮上的操作:

        <button {{action 'toggleSetting'}}>
        </button>

如何在
toggleSetting
回调中获取元素的名称


非常感谢,

您可以向这样的操作传递参数:
{{{action“post”“test”}
,其中第二个测试也可以是变量<代码>{{action“post”mail}}

对于复选框,我将使用item controller解决该问题:

{{#each thing in things itemController='thing'}}
    {{input type="checkbox" checked=onChecked}}
{{/each}}
您的控制器看起来像:

App.ThingController = Ember.Controller.extend({
  needs: ['parent'] //where parent is the name of your other controller.
  action: {
    isChecked: function() {
      this.get('contollers.parent')
          .send('checkboxChecked', this.get('model.name'));
    }
  }
});
或者您可以添加一个组件,让我们将其称为
命名复选框
。这看起来像这样:

  {{input type="checkbox" name="x" checked=controller.isXChecked}} X
  {{input type="checkbox" name="y" checked=controller.isYChecked}} Y
{{named-component name="email" action=isChecked}}
模板(app/templates/components/named checkbox.hbs):

组件(app/components/named checkbox.js):

然后你可以这样使用它:

  {{input type="checkbox" name="x" checked=controller.isXChecked}} X
  {{input type="checkbox" name="y" checked=controller.isYChecked}} Y
{{named-component name="email" action=isChecked}}
这将导致在控制器上调用名为其属性的
isChecked
操作:

actions: {
  isChecked: function(name) {
    this.set('name', !this.get('name'))
  }
}

谢谢,但这更简单:

{{view Ember.Checkbox checkedBinding=someModelProperty}}

单击时,它会更新
someModelProperty
,并在开始时设置正确的值。

如果使用组件,它可能会更干净。我将在稍后更新答案以包含组件。自ember 1.8以来,不推荐通过全局范围访问视图。请看:还有整个动作向下数据向上。这可能会更简单,但我不能保证它在ember 2.0中仍能正常工作。我不明白为什么操作会成为一个问题:我没有使用您的自定义组件方法。
checkedBinding
仅从控制器(模型)获取值。关于弃用问题的观点。谢谢