2016-12-02 3 views
0

Я использую Ember 2.5.0. В моем приложении я создал страницу с раскрывающимся списком, используя плагин ember-select-list.Ember не может сохранить значение выпадающего списка

Я могу отобразить выпадающий список, но не смог сохранить значение выпадающего списка. Всякий раз, когда я выбираю значение, я получаю следующее исключение в хромированной консоли:

Assertion Failed: получить не удается вызвать с «ид» на неопределенный объект

Пожалуйста, найдите следующий код, для ссылка:

Шаблон:

{{select-list content=roles 
       optionValuePath="role" 
       optionLabelPath="role" 
       value=role 
       action=(action (mut role))}} 

Route.js

export default Ember.Route.extend({ 
    model(){ 
     return Ember.RSVP.hash({ 
     books : this.store.findAll("book"), 
     roles : this.store.findAll("role") 
    }); 
}, 
setupController(controller,model){ 
    controller.set('users',model.books); 
    controller.set('roles',model.roles); 
} 
}); 

Модель

export default DS.Model.extend({ 
    role:DS.attr() 
}); 

В маршрутизаторе, когда я прохожу Array(roles: this.store.findAll("role").toArray()) вместо model, я могу сохранить значение, но он выдает ошибку при прохождении модели.

Кто-нибудь, не могли бы вы помочь мне решить эту проблему?

ответ

1

ember-select-list documentation и unit test показывают, что array требуется для content собственности на {{select-list}} помощника.

Именно поэтому Ember.RSVP.hash, похоже, терпит неудачу, так как hash ожидает и возвращает object, который является типом, который не выбран для использования в списке выбора ember-select-list.

Вместо hash вы должны использовать Ember.RSVP.all, так как all ожидает и возвращает array, что должно сработать.

Я продемонстрировал Ember Twiddle example.

Если вы не хотите использовать уголек-список выбора, вы можете найти его проще просто использовать Ember's each helper, чтобы построить свой собственный список выбора, как это:

<select onchange={{action "selectRole" value="target.value"}}> 
    {{#each roles as |role| }} 
    <option value="{{ role }}" label={{ role }}> 
     {{ role }} 
    </option> 
    {{/each}} 
</select> 
+0

Но внутри RSVP.hash Я 2Models одна книга является моделью, а другой является роль, которую я хочу только Роль, чтобы быть массивом, а не книгой. Также есть какой-либо другой простой способ для создания выделенного выделения. Я не знаю, почему ember настолько сложно для основных элементов HTML-формы. – VelNaga

+0

Вы можете добавить «книги» обратно довольно легко. Я обновил пример Twiddle комментариями.Кроме того, я обновил ответ, включив собственный подход Ember к созданию списка '