Наблюдаемые свойства будут активироваться каждый раз при обнаружении изменения свойства, поэтому это решение не совсем готово. Хорошо, что вы уходите от использования тайм-аутов, потому что это просто глупо, тем более что вы побеждаете цель Vue быть фреймворком MVVM.
Если вы хотите иметь инициализацию шаг, то у вас есть два разумных варианта:
- Вы можете смонтировать компонент заранее, а затем отслеживать флаг
initialized
, чтобы определить, выполнили ли вы этот шаг инициализации. - Вы можете отложить установку компонента до тех пор, пока ваши данные не будут готовы в первую очередь.
Вариант 1 будет выглядеть примерно так:
data() {
return {
initialized: false
};
},
watch: {
getOtherName(newValue, oldValue) {
if(this.initialized || oldValue !== null) {
return;
}
// Perform initialization logic.
this.initialized = true;
}
}
Вариант 2 будет выглядеть примерно так вот так:
// HTML template
<my-component v-if="data_source !== null" :otherName="data_source"></my-component>
// JS
mounted: {
// Perform initialization logic.
}