Я пытаюсь установить выбранное по умолчанию значение поля выбора, сгенерированного с помощью {{view Em.Select}}
, что должно быть довольно простой задачей в соответствии с документацией либо установкой valueBinding
на соответствующее значение, либо selecitonBinding
на весь представленный объект по предмету.Настройка Ember.Select Значение по умолчанию Выбранное значение
Пример кода здесь: http://jsfiddle.net/p2dtx/2/
HTML
<script type="text/x-handlebars">
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
!{{dafaultOption}}!
{{view Em.Select prompt="test" contentBinding="controllers.option.content" optionLabelPath="content.name" optionValuePath="content.id" valueBinding="dafaultOption" }}
</script>
JS
App = Ember.Application.create();
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter
});
App.Router.map(function() {
// put your routes here
});
App.IndexController = Em.Controller.extend({
dafaultOption: 'OP2',
needs:['option']
});
App.Option = DS.Model.extend({
name: DS.attr('string')
});
App.Option.FIXTURES = [
{
id: 'OP1',
name: 'Option 1'
},
{
id: 'OP2',
name: 'Option 2'
}
];
App.OptionController = Em.Controller.extend({
init: function() {
this._super();
this.set('model', this.get('store').find('option'))
}
})
Примечание на странице загрузки значения между !! пуст, несмотря на то, что defaultOption
установлено в «OP2» в объявлении IndexController. Если я удалю опцию valueBinding
с {{view Em.Select}}
OP2 выводится между !! как и ожидалось, что заставляет меня поверить, что при отображении выбора он устанавливает значение indexController.defaultOption
в значение null (подсказка). Когда я меняю выбор вручную, значение обновляется, как ожидалось. Есть идеи?
Спасибо, что проверю, но я не вижу причин, по которым он не должен работать. Документация определенно говорит, что 'valueBinding' также должен работать, возможно, устарел. –
Действительно, это действительно помогло. Прекрасно работает после обновления emberjs до 1.0.0 и ember-data 1.0.0.beta2. Благодарю. –
Меня особенно интересует эта деталь: «... но это должен быть элемент, содержащийся в массиве, который вы передаете его», потому что похоже, что моя проблема имеет к этому какое-то отношение. Я делаю некоторые копии объектов в своем коде, поэтому после некоторых операций экземпляр selectionBinding не входит в список «contentBinding» (здесь нет равенства адресов, хотя существует логическое равенство .... Я имею в виду: если все свойства экземпляра в selectBinding по сравнению с каждым элементом в cntentBinding, будет совпадение). ...Как заставить ember выполнять логическое равенство вместо равенства адресов? –