Javascript 在余烬中记录单选按钮的值
我对Ember(使用版本0.2.3)相当陌生。我有一个有几个计算值的组件。它们从输入字段中收集这些计算值:Javascript 在余烬中记录单选按钮的值,javascript,ember.js,handlebars.js,htmlbars,Javascript,Ember.js,Handlebars.js,Htmlbars,我对Ember(使用版本0.2.3)相当陌生。我有一个有几个计算值的组件。它们从输入字段中收集这些计算值: export default Component.extend({ loanAmount : 200000, deductible : 0, debtInt : 5, getLoanCosts: computed('loanAmount', 'debtInt', function(){ return (get(this, 'debtInt')/12) * get(
export default Component.extend({
loanAmount : 200000,
deductible : 0,
debtInt : 5,
getLoanCosts: computed('loanAmount', 'debtInt', function(){
return (get(this, 'debtInt')/12) * get(this, 'loanAmount');
})
在我的template.hbs上,我有一个输入字段{{input value=loanAmount}
,我可以在我的template.hbs中调用{{getLoanCosts}
,以显示计算出的成本。这对于文本/数字输入非常有效
但是,我需要一个带有两个值(是和否)的单选按钮输入。这应该与我的组成部分中的免赔额
值一致(即,该贷款是否可以免赔?)。但是,如果我这样做:
Yes {{ input type="radio" name="deductible" value=deductible }}
No {{ input type="radio" name="deductible" value=deductible }}
我不能为这两个输入设置值,就像我可以使用纯HTML一样。如果我设置value=0和value=1,它们在我的组件中永远不会更新。如何根据是否选择了“是”或“否”,更新组件中的“我的免赔额”。两个单选按钮的值相同,但不应相同。它们需要绑定到不同的属性,但具有不同的值。下面是单选按钮组件的工作示例
Ember.RadioButton = Ember.View.extend({
tagName : 'input',
type : 'radio',
attributeBindings : ['name', 'type', 'value', 'checked:checked:'],
click : function() {
this.set('selection', this.$().val());
},
checked : function() {
return this.get('value') === this.get('selection');
}.property()
});
App.ApplicationController = Ember.Controller.extend({
deductible: 0
});
Yes {{view Ember.RadioButton selectionBinding="deductible" value=1 name="deductible"}}
No {{view Ember.RadioButton selectionBinding="deductible" value=0 name="deductible"}}
是的,所以余烬没有内置单选按钮支持。尝试制作自己的组件!我说的“自己做”是指无耻地从世界上偷一个 在component中,单选按钮仍然具有值,但选择的绑定是到传入的checked属性:
Yes{{radio-button value='1' checked=choice}}
No{{radio-button value='0' checked=choice}}
component.hbs
<label>No</label>
{{input click=(action "clicky" false) type="radio" name="someAttr"}}
<label>Yes</label>
{{input click=(action "clicky" true) type="radio" name="someAttr"}}
我曾遇到过回购协议,但我认为这一定是一种更简单的方式,我错过了。作为一个临时修复,我做了下拉列表<代码>{view“selected”}非常简单,你会认为收音机会起作用。是的,只是在某个时候,余烬核心团队决定在单选按钮上划一条线,说是的,我们不会给你这些按钮,但我们会给你输入=文本和选择框,哈哈。老实说,作为一个组件,这种单选按钮方法是余烬方式,几乎不过分
<label>No</label>
{{input click=(action "clicky" false) type="radio" name="someAttr"}}
<label>Yes</label>
{{input click=(action "clicky" true) type="radio" name="someAttr"}}
actions: {
clicky (value) {
this.set("someAttr", value)
}
}