Emberjs bindAttr不能与ember版本1.0.0-rc.1一起使用

时间:2013-02-21 22:14:35

标签: ember.js handlebars.js

我正在使用此JSFiddle中的代码尝试执行类似的操作(使用Ember版本0.9.3)。但是,当我使用更新版本的Ember(1.0.0-rc.1)的代码时,第11行输入标签中的把手bindAttr似乎不起作用。

Here是同一个JSFiddle的版本,但使用的是新的Ember版本。您可以在输出中看到已经存在相同的功能。

新版本的Ember有什么变化,我该如何解决?

这两个JSFiddles中的html是相同的:

<script type="text/x-handlebars">
{{view Em.RadioButton title="1" option="1" group="default" valueBinding="App.radio1"}}
{{view Em.RadioButton title="Ohai" option="Words" group="default" valueBinding="App.radio1"}}
{{view Em.RadioButton title="3" option="3" group="default" valueBinding="App.radio1"}}
{{view Em.RadioButton title="Dog" option="Dog" group="default" valueBinding="App.radio1"}}
{{view Ember.TextField valueBinding="App.radio1"}}
</script>

这里的JS在JSFiddles中都是相同的:

(function(exports) {
var set = Ember.set, get = Ember.get;
Ember.RadioButton = Ember.View.extend({
title: null,
checked: false,
group: "radio_button",
disabled: false,

classNames: ['ember-radio-button'],

defaultTemplate: Ember.Handlebars.compile('<label><input type="radio" {{ bindAttr  disabled="disabled" name="group" value="option" checked="checked"}} />{{title}}</label>'),

change: function() {
Ember.run.once(this, this._updateElementValue);
},

_updateElementValue: function() {
var input = this.$('input:radio');
set(this, 'value', input.attr('value'));
}
});

})({});

App = Ember.Application.create({
radio1: ""
});

1 个答案:

答案 0 :(得分:1)

JSFiddle example

您需要使用view.propertyName

像这样引用模板中的属性
defaultTemplate: Ember.Handlebars.compile('<label><input type="radio" {{ bindAttr disabled="view.disabled" name="view.group" value="view.option" checked="view.checked"}} />{{view.title}}</label>')