如果我按如下方式定义一个复选框:
{{input type="checkbox" name="email" checked=controller.isEmailChecked}} Email
在回调controller.isEmailedChecked
中,定义为:
isEmailChecked: function(key, value) {
...
}
如何获得name
的价值("电子邮件")?
我的控制器负责显示多个复选框,所以我不想写这样的行:
{{input type="checkbox" name="x" checked=controller.isXChecked}} X
{{input type="checkbox" name="y" checked=controller.isYChecked}} Y
只做:
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
回调中获取元素的名称?
非常感谢,
答案 0 :(得分:0)
您可以将参数传递给这样的操作:{{action "post" "test"}}
其中第二个测试也可以是变量。 {{action "post" mail}}
至于复选框我用物品控制器来解决这个问题:
{{#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'));
}
}
});
或者您可以添加组件,我们可以将其称为named-checkbox
。这看起来像这样:
模板(app / templates / components / named-checkbox.hbs):
{{input name=name type="checkbox" checked=onChecked}}
{{yield}}
组件(app / components / named-checkbox.js):
import Ember from 'ember';
import layout from '../templates/components/named-checkbox';
export default Ember.Component.extend({
layout: layout,
name: "",
action: {
onChecked: function() {
this.sendAction(this.get('action'), this.get('name'));
}
}
});
然后你可以像这样使用它:
{{named-component name="email" action=isChecked}}
这将导致在控制器上调用isChecked
操作,其名称为其属性:
actions: {
isChecked: function(name) {
this.set('name', !this.get('name'))
}
}
答案 1 :(得分:0)
感谢albertjan,但这更简单:
{{view Ember.Checkbox checkedBinding=someModelProperty}}
单击时会更新someModelProperty
,并且最初也会设置正确的值。