2014-11-05 2 views
0

Я знаю, что есть небольшая проблема, которая смотрит прямо на мое лицо, и не может понять это.Выбор эмбера не отображает выбранный объект

Рассмотрим

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

Теперь выберите УЦИ p down показывает выбранный элемент.

В чем проблема? Я даже проверял правильность порядка свойств (id и desc). Это потому, что два объекта нельзя сравнивать напрямую, если не используется определенный алгоритм или, скорее, использовать JSON.stringify?

ответ

2

Проблема заключается в том, что при указании

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

, что хэш другой объект из одного в baseList, несмотря на то, что это лексически идентичны. Так что Ember не может найти его в baseList (это делает сравнение ===, а не глубокое сравнение). Когда вы делаете filterBy, с другой стороны, он возвращает фактический объект из baseList, который Ember.Select может найти в baseList.

Вместо этого вы можете попробовать использовать valueBinding; то вы можете просто указать "item1".

BTW, порядок свойств не имеет значения здесь или где-либо еще в JS.

+0

«этот хэш - это другой объект, который находится в основе« LLLList ».
Большое спасибо «valueBinding» - это то, что я искал.
«порядок свойств», я думаю, что u найдет его, особенно когда вы делаете JSON.stringify, а затем сравниваете. Однако в этом случае это будет скорее сравнение строк.
В целом вы правы. Благодаря тонну – wallop

Смежные вопросы