Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置余烬。选择默认选定值_Javascript_Ember.js - Fatal编程技术网

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" }}