2015-08-19 2 views
61

Просто быстрый вопрос.Можете ли вы заставить Vue.js перезагружать/повторно отображать?

Можете ли вы заставить Vue.js перезагрузить/пересчитать все? Если да, то как?

+0

может получить лучшую поддержку здесь https: // github.com/vuejs/Discussion/issues –

+0

Отлично, не знал об этом месте обсуждения. Я попробую там. – Dave

+0

Вы получили ответ? Я тоже хочу знать. – Oddman

ответ

72

Попробуйте это магическое заклинание:

vm.$forceUpdate(); 

Нет необходимости создавать какие-либо висит вары :)

Update: Я нашел это решение, когда я только начал работать с VueJS. Однако дальнейшая разведка доказала этот подход как костыль. Насколько я помню, через некоторое время я избавился от него, просто поместив все свойства, которые не смогли автоматически обновиться (в основном вложенные) в вычисленные свойства.

Больше информации здесь: https://vuejs.org/v2/guide/computed.html

+0

, это действительно помогло мне, когда я использовал его с компонентом мастера формы в Vue. Мои поля полей формы теряли состояние, хотя переменные данных были неповрежденными.Теперь я использую это, чтобы обновить представления, когда возвращаюсь, мне пришлось поместить его в функцию setTimeout. –

1

Я нашел способ. Это немного хаки, но работает.

vm.$set("x",0); 
vm.$delete("x"); 

Где vm Ваш объект вид-модель, и x является несуществующей переменной.

Vue.js будет жаловаться на это в журнале консоли, но он вызывает обновление для всех данных. Протестировано с версией 1.0.26.

4

Это кажется довольно чистым раствором из matthiasg на this issue:

вы также можете использовать :key="someVariableUnderYourControl" и изменить ключ, если вы хотите, чтобы компонент будет полностью восстановлен

Для моего случая использования я кормил геттер Vuex в компонент в качестве опоры. Каким-то образом Vuex будет получать данные, но реактивность не будет надежно удалена, чтобы перегрузить компонент. В моем случае, установив компонент key на некоторый атрибут на prop, гарантированное обновление, когда геттеры (и атрибут) окончательно разрешены.

0

с помощью v-если директива

<div v-if="trulyvalue"> 
    <component-here /> 
</div> 

Так, просто изменив значение trulyvalue от ложного к истине будет вызывать компонент между делами до засавить снова

Смежные вопросы