Здесь Select2.vue
источник: https://pastebin.com/zKvaaDS9
Здесь ItemDetail.vue
Источник страницы: https://pastebin.com/gL7a75hH
Я использую select2 в VueJS, который я создал на основе VueJS документации и других ресурсов. Кажется, все работает нормально. Но иногда tag
или selected
не выбирает правильный, который после отладки я иногда обнаруживаю undefined
, []
или ''
(пусто).
Я очень подозреваю, что это связано с асинхронностью c. Вот что я хочу заархивировать: я хочу показать все юниты, которые поддерживают предмет.
- AJAX: api для получения юнитов
- AJAX: api для получения предмета подробно. Элемент данных, включая текущие единицы измерения, поддерживающие этот элемент.
- Загрузка модулей select2 на основе
item.units
и units
. Иногда это мелочь, а иногда нет.
Вот некоторые объяснения того, что я делаю
// Calling item detail(ASYNC)
// api/item/detail/:id
var item = getItemDetail()
// Calling ajax units(ASYNC)
// api/category?group_by=units
var units = getUnits();
Надеюсь, что select2 type=tags
будет правильно отображаться на основе item.units (для v-модели) и единиц измерения, доступных в раскрывающееся меню.
Кажется, что не отображается правильно, когда:
- Select2 отображает без параметров и значения (ajax не завершено для
item
и units
) - AJAX Item fini sh first
- AJAX Units fini sh last
Когда я отлаживаю, кажется, что select2 updated
v-модель с пустым значение, потому что в выбранных элементах со значением v-модели ничего не совпадает. Например:
item.units = [1,2,3];
units = []; // Because not ready yet
$(this.$el).val(); // Return empty array or something
Я попытался исправить порядок следующим образом:
- Визит Select2 без параметров и значения (ajax не завершено для
item
и units
) - AJAX Конечные единицы sh последние, ждут до конечных sh и go до шага 3
- AJAX Элемент конечных sh первый
Это прекрасно работает.
Вопрос в следующем: Можно ли запустить asyn c и отрендерить select2 без необходимости думать о ajax порядке или ждать, пока компиляция будет первой?