je créer un code d'attribut aurelia personnalisé comme ci-dessousComment actualiser bootstrap sélectionnez les options de après les données de charge de ajax api
@customAttribute('bt-select')
@inject(Element)
export class BootstrapSelect {
@bindable val;
@bindable list;
constructor(element) {
this.element = element;
}
attached() {
$(this.element).selectpicker();
}
valChanged(newValue, oldValue) {
$(this.element).selectpicker("val",_.isObject(newValue)?newValue.id:newValue);
}
listChanged(newValue, oldValue) {
setTimeout(()=>{
$(this.element).selectpicker("refresh");
},300)
}
detached(){
this.val = null;
this.list = null;
$(this.element).selectpicker("destroy");
}
}
et l'utiliser comme ci-dessous
<select value.bind="form.category" data-width="100"
bt-select="val.bind:form.category;list.bind:categorys;">
<option value="">select:category</option>
<option repeat.for="category of categorys"
value="${category.id}">
${category.name}
</option>
</select>
les options de la sélectionner Répétition de l'étiquette de catégories de prop de classe, this.categorys
loda données de ajax api, c'est étape asynchrone pour rendre l'étiquette d'option de sélection et je dois ajouter setTimeout
func en listChanged
méthode d'attendre aurelia rendre le choix des options tag com plète puis force rafraîchir bootstrap-select composante
Je pense que ce n'est pas bon, mais je n'ai pas de meilleure façon de le résoudre, Je konw beaucoup de plugin jQuery devrait utiliser élément dom terminé et les rendre, mais dans aurelia cadre ci-joint méthode(), une charge de données de async api est là ont des méthodes de post-traitement ou d'un événement pour invoquer après les données async avaient se lier à dom
thx pour votre aide, après un test, je trouve cela ne fonctionne pas bien, mais j'utilise this.taskQueue.queueTask obtenir le même efftect que mon envie, après avoir lu l'article https://ilikekillnerds.com/2016/ 02/working-with-the-aurelia-task-queue/Je sais juste que queueMicroTask s'exécute avant queueTask, et je teste dans beaucoup de cas dans mon projet, certains fonctionnent et d'autres non quand j'utilise queueMicroTask, y a-t-il plus de détails? deux méthodes. Merci beaucoup – date13
La réponse aurait dû fonctionner ... Il y a probablement quelque chose d'autre qui affecte votre code –