Это потому, что элемент списка (li
) не генерирует собственное событие load
.
Следующая лучшая вещь, которую вы можете сделать, это дождаться завершения следующего цикла рендеринга Vue и затем вызвать ваш метод. Таким образом, вы гарантируете, что весь цикл завершил рендеринг.
Чтобы дождаться окончания цикла рендеринга, нам нужно использовать служебный метод Vue nextTick()
:
import VueSweetalert2 from 'vue-sweetalert2';
Vue.use(datePicker);
Vue.use(VueSweetalert2);
Vue.use(VeeValidate);
export default {
name: "modal",
components: {
draggable,
},
mounted() {
this.$nextTick(() => {
this.test();
});
},
methods: {
test(){
alert('load');
}
}
}
В этом примере мы используем версию обратного вызова nextTick
. Также есть версия, основанная на обещаниях:
mounted() {
this.$nextTick().then(this.test);
}
Или, если вы знакомы с async/await
:
async mounted() {
await this.$nextTick();
this.test();
}
Обратите внимание, что здесь не запускается метод test
для каждого элемента question.options
.
Если вы хотите сделать это, я думаю, что ваш единственный вариант - все еще использовать nextTick
, а затем внутри test
перебрать question.options
еще раз и вызвать метод для каждой опции.
Если вы предоставите дополнительную информацию о том, чего пытаетесь достичь, возможно, мы сможем найти более оптимальный маршрут.
PS! Добро пожаловать в StackOverflow ?