我正在使用这个JSFiddle中的代码来尝试做类似的事情(它使用 Ember 版本 0.9.3)。但是,当我将代码与较新版本的 Ember (1.0.0-rc.1) 一起使用时,第 11 行输入标记中的把手 bindAttr 似乎不起作用。
这是相同 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>
这是两个JSFiddles中相同的JS:
(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: ""
});