Как изменять переменную Vue js и вне?
Как изменять переменную Vue js и вне? Пробовал так:
<script>
export default {
data() {
return {
newstext: "Loading"
}
},
methods: {
},
components: {
navbar,
mapss,
mm,
},
}
function b() {
this.newstext = "Notload"
}
</scrit>
Но ничего не вышло.
Ответы (2 шт):
Засунь "вне" внутрь. Например в плагин.
Но если очень хочется, то можно через замыкание в лямбде.
<script>
export default {
data() {
return {
newstext: "Loading"
}
},
methods: {
setnewstext(text) {
this.newstext = text
}
},
components: {
navbar,
mapss,
mm,
},
mounted() {
let self = this;
window.setnewstext = (text) => {self.setnewstext(text)}
}
}
function b() {
setnewstext("Notload")
}
</scrit>
Изменение состояние Vue из "вне" противоречит философии и стандартам "хорошего кода" Vue. Как вам написал "eri" - лучший способ изменить переменную Vue - изменить её внутри самого Vue и для этого необходим Vuex.
Vuex - это пожалуй лучший и самый безопасный (без сюрпризов) способ изменить переменную Vue вне компонента Vue. Vuex - это хранилище Vue, создано для обмена информацией между компонентами и для ситуаций как у Вас.
Есть ещё варианты с костылями, к примеру: тык (нагуглил ещё десяток, погуглите) и, возможно поможет Vue метод watch, но я не знаю конкретно что Вам нужно, по этому вероятно watch не решит Вашу проблему. Опять же, лучше всего смотрите в сторону Vuex и изменяйте переменные Vue через него.