[英]Setting Ember.Select Default Selected Value
我试图通过设置产生的选择框的默认选择的值{{view Em.Select}}
这应该是根据文档或者设置一个相当简单的任务valueBinding
为适当的值或selecitonBinding
由项表示的完整的对象。
此处的示例代码: http : //jsfiddle.net/p2dtx/2/
HTML
<script type="text/x-handlebars">
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
!{{dafaultOption}}!
{{view Em.Select prompt="test" contentBinding="controllers.option.content" optionLabelPath="content.name" optionValuePath="content.id" valueBinding="dafaultOption" }}
</script>
JS
App = Ember.Application.create();
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter
});
App.Router.map(function() {
// put your routes here
});
App.IndexController = Em.Controller.extend({
dafaultOption: 'OP2',
needs:['option']
});
App.Option = DS.Model.extend({
name: DS.attr('string')
});
App.Option.FIXTURES = [
{
id: 'OP1',
name: 'Option 1'
},
{
id: 'OP2',
name: 'Option 2'
}
];
App.OptionController = Em.Controller.extend({
init: function() {
this._super();
this.set('model', this.get('store').find('option'))
}
})
注意页面加载之间的值! 尽管在IndexController声明中将defaultOption
设置为'OP2',但它为空。 如果我从{{view Em.Select}}
删除valueBinding
选项,OP2将在!!之间输出。 如预期的那样,这使我相信,呈现选择时, indexController.defaultOption
设置为null(提示选项)。 当我手动更改选择时,值将按预期更新。 有任何想法吗?
selectionBinding
是在Ember.Select
上设置的正确参数,但它应该是传递给它的contentBinding
的数组中包含的项,因此像下面这样工作即可。
在您的App.OptionController
上定义一个属性来保存所选项目:
App.OptionController = Em.Controller.extend({
selectedOption: Ember.computed.alias('content.firstObject'),
init: function() {
this._super();
this.set('model', this.get('store').find('option'))
}
});
并将此属性设置为您的selectionBinding
:
{{view Em.Select
prompt="test"
contentBinding="controllers.option.content"
optionLabelPath="content.name"
optionValuePath="content.id"
selectionBinding="controllers.option.selectedOption" }}
工作演示 。
希望能帮助到你。
您会注意到模板中的dafaultOption
为空白。 这是执行顺序的问题。 select的内容最初是空的,因此Ember.Select
更新以选择匹配项(在这种情况下,因为没有加载而没有匹配项),并且dafaultOption
更新为null
。 然后,您的数据将加载,并且由于dafaultOption
为null
,因此未选择任何项目。
使用ID的有效演示: http : //jsfiddle.net/eZWXT/
或者,您可以使用使用对象相等性的直观像素演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.