灰烬选择未显示所选项目

时间:2014-11-05 07:29:40

标签: javascript object ember.js ember-select

我知道有一个小小的问题盯着我的脸,不能弄清楚。

考虑

{{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

1 个答案:

答案 0 :(得分:2)

问题在于指定

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

该哈希是与baseList中的哈希不同的对象,即使它在词法上是相同的。所以Ember无法在baseList中找到它(它正在进行===比较,而不是深度比较)。另一方面,当您执行filterBy时,它会返回baseList中的实际对象,Ember.Select可以在baseList中找到该对象。

您可能想尝试使用valueBinding;然后你可以指定"item1"

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