我有一个 Ember.Select 视图,如何将禁用属性添加/绑定到选项标签(不是整个选择框)。
即,我很想完成以下结果。
<select>
<option value="1" disabled>I am a disabled option</option>
<option value="2">Im selectable</option>
</select>
我有一个 Ember.Select 视图,如何将禁用属性添加/绑定到选项标签(不是整个选择框)。
即,我很想完成以下结果。
<select>
<option value="1" disabled>I am a disabled option</option>
<option value="2">Im selectable</option>
</select>
Ember.Select
视图不是开箱即用的。您将需要添加一个自定义属性绑定disabled
和一个相应的计算属性来告诉 Ember 如何找到它。
一种简单的方法是在用于呈现选择的内容/数据项上添加 disabled 属性。
App.ApplicationController = Ember.Controller.extend({
choices: function() {
return [
Ember.Object.create({firstName: "Lorem", id: 1}),
Ember.Object.create({firstName: "Ipsum", id: 2, disabled: true}),
Ember.Object.create({firstName: "Dolor", id: 3}),
Ember.Object.create({firstName: "Sit", id: 4}),
Ember.Object.create({firstName: "Amet", id: 5})
];
}.property()
});
并重新打开或扩展Ember.SelectOption
添加disabled
属性和计算属性的视图。
Ember.SelectOption.reopen({
attributeBindings: ['value', 'selected', 'disabled'],
disabled: function() {
var content = this.get('content');
return content.disabled || false;
}.property('content'),
});
这是一个有效的jsbin。请注意,该ipsum
选项已禁用。
你可以didInsertElement
在你的自定义Ember.Select
视图中处理它。
didInsertElement: function () {
this.$('option[value="1"]').attr('disabled', true);
}