Пользовательские и первые опции в ember-power-select - PullRequest
0 голосов
/ 18 мая 2018

Я использую 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, вероятно, где-то инициализирует его, но я не смог найти никакой документации об этом.

Спасибо за ваши ответы!

1 Ответ

0 голосов
/ 18 мая 2018

Если кто-то когда-нибудь сталкивался с этим, это было решение
Вызывая это, когда мы создаем предложение, а затем инициализируем массив предложений следующим образом:

offer.set('offer', []);
...