Javascript 在余烬中记录单选按钮的值

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(

我对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(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)
  }
}