Я использую Ember-power-select-with-create, чтобы сделать возможным выбор в моих выпадающих списках.
Это часть выбора мощности в файле .hbs.
{{#power-select-multiple-with-create
options=options //array for prefill values
selected=offer.offer //is where we save it to (offer is the model and has an array named offer)
onchange=(action (mut offer.offer)) //default onchange for prefill options
onfocus=(action "handleFocus")
onblur=(action "handleBlur")
oncreate=(action "createOffer" offer.offer) //This calls "createOffer"
buildSuggestion=suggestion
as |offer|}}
{{offer}}
{{/power-select-multiple-with-create}}
Функция "createOffer" в моем файле .js выглядит следующим образом:
Она получает два переданных значения: selected, который является offer.offer и searchText, который является вводом, который пытается добавить пользователь.
createOffer(selected, searchText)
{
if (selected == null)
{
selected = []; //This is what I'm currently trying: if its null initialize it
}
if (selected.includes(searchText)) { //Don't add if it's already added
this.get('notify').alert("Already added!", { closeAfter: 4000 });
}
else { // if it's not yet added push it to the array
selected.pushObject(searchText);
}
}
Этот код прекрасно работает для добавления тех, которые мы предопределили, а также для пользовательских опций, однако он делаетне работает, если это первое и нестандартное предложение, которое мы пытаемся добавить в новую группу предложений.
Я предполагаю, что это как-то связано с тем, что массив еще не инициализирован.Указатель на тот факт, что это происходит из-за того, что массив не был инициализирован, заключается в том, что я получаю сообщение об ошибке в виде строки: Не могу вызвать pushObject для undefined.И я предполагаю, что причина, по которой он работает с предопределенными значениями, заключается в том, что ember-power-select, вероятно, где-то инициализирует его, но я не смог найти никакой документации об этом.
Спасибо за ваши ответы!