Ember Power Select - Как закрыть выбор EPS

Я пытаюсь закрыть окно выбора, прежде чем он выполнит поиск с помощью Ember Power Select. Я предполагаю, что пользователь знает, что он ищет, если он вставляет список и автоматически устанавливает выбранные элементы.

Я пытался использовать select.actions.close(), но кажется, что это связано с событием onClose(). Я также пытаюсь использовать свойство opened, но его изменение не показало никакой разницы.

Мой компонент

{{#power-select-multiple
        renderInPlace=true
        search=(action "mySearch")
        selected=selected_item
        onchange=(action (mut selected_item))
        oninput=(action "checkPastingMultipleElements")
        opened=checkSelect
        as |name|
}}
    {{name}}
{{/power-select-multiple}}

мое действие

checkPastingMultipleElements(text, select) {
        this.set('selecteded_item', [text]);
        // error
        // select.actions.close()

        // does nothing
        // if (text.length === 4) { this.set('checkSelect', false); }            

        return false; // if true, it executes the search
}

person tupan    schedule 06.12.2016    source источник


Ответы (1)


Ваше первоначальное предположение было правильным, использование select.actions.close возможно, но вы должны поставить его в очередь в цикле выполнения, чтобы избежать проблемы двойного рендеринга.

Кроме того, если вы хотите выбрать значение и закрыть выбор, select.actions.choose — это именно то, что вам нужно.

  checkPastingMultipleElements(text, select) {
    Ember.run.scheduleOnce('actions', null, select.actions.choose, [text]);
  }
person miguel.camba    schedule 06.12.2016
comment
Прежде всего, спасибо за разработку этого невероятного дополнения. Во-вторых, спасибо за ответ, он привел меня к правильному ответу. Причина, по которой мне нужно было использовать close(), заключается в том, что мне нужно разделить текст на несколько вариантов, а не только на один. Таким образом, я мог бы сделать this.set('selected_item', text.split(" ")); - person tupan; 07.12.2016
comment
Кроме того, я заметил, что с исходным ответом (используя выбор) он выдает ошибку всякий раз, когда я удаляю текст "Assertion Failed: `{{power-select-multiple}}` requires a `searchField` when the options are not strings to remove options using backspace". - person tupan; 07.12.2016
comment
Да это верно. На примере {{power-select-multiple searchField="name"}}. Это заставило меня понять, что в документации об этом не упоминается. Я должен обновить его. - person miguel.camba; 28.12.2016