我知道有一个小小的问题盯着我的脸,不能弄清楚。
考虑
{{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
?
答案 0 :(得分:2)
问题在于指定
selectedItem = {"id":"item1","desc":"item number is 1"};
该哈希是与baseList
中的哈希不同的对象,即使它在词法上是相同的。所以Ember无法在baseList
中找到它(它正在进行===
比较,而不是深度比较)。另一方面,当您执行filterBy
时,它会返回baseList
中的实际对象,Ember.Select
可以在baseList
中找到该对象。
您可能想尝试使用valueBinding
;然后你可以指定"item1"
。
顺便说一下,属性的顺序在这里或其他任何地方都没有区别。