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
仅从控制器(模型)获取值。关于弃用问题的观点。谢谢