Javascript 设置余烬。选择默认选定值
我试图设置通过Javascript 设置余烬。选择默认选定值,javascript,ember.js,Javascript,Ember.js,我试图设置通过{{view Em.select}}生成的选择框的默认选定值,根据文档,这应该是一项非常简单的任务,可以将valueBinding设置为适当的值,也可以将selecitonBinding设置为该项表示的完整对象 此处的示例代码: HTML 请注意,在第页加载介于!!为空,尽管在IndexController声明中将defaultOption设置为“OP2”。如果我从{{view Em.Select}}中删除valueBinding选项,OP2将在!!正如所料,这使我相信,当呈现s
{{view Em.select}}
生成的选择框的默认选定值,根据文档,这应该是一项非常简单的任务,可以将valueBinding
设置为适当的值,也可以将selecitonBinding
设置为该项表示的完整对象
此处的示例代码:
HTML
请注意,在第页加载介于!!为空,尽管在IndexController声明中将
defaultOption
设置为“OP2”。如果我从{{view Em.Select}}中删除valueBinding
选项,
OP2将在!!正如所料,这使我相信,当呈现select时,它正在将indexController.defaultOption
设置为null(提示选项)。当我更改“手动选择”时,值会按预期更新。有什么想法吗?在成员上设置的选择绑定
是正确的参数。选择
,但它应该是传递给其内容绑定
的数组中包含的一个项,因此按照以下方式执行应该可以
在应用程序上定义属性。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
,因此未选择任何项目
使用ids的工作演示:
或者您可以使用直观像素的演示,该演示使用对象平等性。谢谢,我会测试它,但我看没有理由不起作用。文档中明确地说,
valueBinding
也应该可以工作,也许它已经过时了。事实上,它确实有所帮助。在将emberjs更新为1.0.0和ember data 1.0.0.beta2后,此功能可以完美运行。谢谢。我对这个细节特别感兴趣:“……但它应该是你传递给它的数组中包含的一个项目”,因为我的问题似乎与它有关。我在代码中进行了一些对象复制,因此在一些操作之后,selectionBinding的实例不是“contentBinding”列表中的实例(这里没有地址相等,尽管存在逻辑相等……我的意思是:如果selectionBinding中的实例的所有属性与cntentBinding中的每个元素进行比较,就会有一个匹配). ... 如何使ember执行逻辑相等而不是地址相等?
App.OptionController = Em.Controller.extend({
selectedOption: Ember.computed.alias('content.firstObject'),
init: function() {
this._super();
this.set('model', this.get('store').find('option'))
}
});
{{view Em.Select
prompt="test"
contentBinding="controllers.option.content"
optionLabelPath="content.name"
optionValuePath="content.id"
selectionBinding="controllers.option.selectedOption" }}