2016-12-06 3 views
1

J'essaie de fermer la boîte de sélection avant d'exécuter la recherche avec Ember Power Select. Je suppose que l'utilisateur sait ce qu'il recherche s'il colle une liste et définit automatiquement les éléments sélectionnés.Ember Power Select - Comment fermer la sélection de EPS

J'ai essayé d'utiliser select.actions.close() mais il semble qu'il soit lié à l'événement onClose(). J'essaie aussi d'utiliser la propriété opened mais en la changeant je n'ai pas montré de différence.

Mon composant

{{#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}} 

mon action

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 
} 

Répondre

3

Votre estimation initiale était droite, en utilisant select.actions.close est possible, mais vous devez enqueue cela dans le runloop pour éviter un problème double rendu.

En outre, si ce que vous voulez faire est de sélectionner une valeur et fermer la sélection, select.actions.choose est exactement ce que vous voulez.

checkPastingMultipleElements(text, select) { 
    Ember.run.scheduleOnce('actions', null, select.actions.choose, [text]); 
    } 
+1

Tout d'abord, merci de développer cet addon incroyable. Deuxièmement, merci pour la réponse, cela m'a conduit à la bonne réponse. La raison pour laquelle j'ai besoin d'utiliser 'close()' est parce que je dois diviser le texte en plusieurs choix et pas seulement un. De cette façon je pourrais faire 'this.set ('selected_item', text.split (" "));' – mk2

+0

Aussi, j'ai remarqué qu'avec la réponse originale (using choose), il jette une erreur chaque fois que je supprime le texte '" Échec de l'assertion: \ '{{power-select-multiple}} \' nécessite un \ 'searchField \' lorsque les options ne sont pas des chaînes pour supprimer des options en utilisant l'espace arrière "'. – mk2

+0

Oui, c'est correct. Par exemple '{{power-select-multiple searchField =" nom "}}'. Cela m'a fait réaliser que la documentation ne mentionne pas cela. Je devrais le mettre à jour. –