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然后进行比较时。然而,在这种情况下,它将更多地是一个字符串比较
总的来说,你是对的。非常感谢