Javascript 余烬选择未显示所选项目

Javascript 余烬选择未显示所选项目,javascript,object,ember.js,ember-select,Javascript,Object,Ember.js,Ember Select,我知道有个小问题一直盯着我的脸看,我想不出来 考虑 {{view Ember.Select content=baseList optionLabelPath="content.desc" optionValuePath="content.id" selectionBinding="selectedItem" }} baseList = [{"id":"item1","desc":"

我知道有个小问题一直盯着我的脸看,我想不出来

考虑

{{view Ember.Select                         
     content=baseList          
     optionLabelPath="content.desc"
     optionValuePath="content.id"
     selectionBinding="selectedItem" 
 }}

baseList = [{"id":"item1","desc":"item number is 1"},{"id":"item2","desc":"item number is 2"}] 
下面的代码不起作用

selectedItem = {"id":"item1","desc":"item number is 1"};
“选择”下拉列表不显示任何选定项目

下面的作品

selectedItem = baseList.filterBy('id','item1')[0];
现在,“选择”下拉列表显示所选项目


有什么问题?我甚至检查了属性(id和desc)的顺序是否正确。这是因为两个对象不能直接比较,除非采用特定的算法,或者使用
JSON.stringify

问题是当您指定

selectedItem = {"id":"item1","desc":"item number is 1"};

该散列与基本列表中的散列是不同的对象,尽管它在词汇上是相同的。因此,Ember无法在
基本列表中找到它(它正在进行
===
比较,而不是深度比较)。另一方面,当您执行
过滤器by
时,它会从
基本列表
中返回实际对象,该基本列表是
成员。选择
可以在
基本列表
中找到

您可能想尝试改用
valueBinding
;然后您可以指定
“item1”


顺便说一句,属性的顺序在这里和JS中的任何其他地方都没有区别。

“hash与baseList中的hash是不同的对象”这样认为
非常感谢“valueBinding”是我想要的
“属性的顺序”,我想你会发现它确实如此,尤其是当你在做JSON.stringify然后进行比较时。然而,在这种情况下,它将更多地是一个字符串比较
总的来说,你是对的。非常感谢