Как изменять переменную Vue js и вне?

Рейтинг: 0Ответов: 2Опубликовано: 02.02.2023

Как изменять переменную Vue js и вне? Пробовал так:

<script>
export default {
        data() {
            return {
                newstext: "Loading"
            }
        },
        methods: {
        },
        components: {
            navbar,
            mapss,
            mm,
        },
    }
function b() {
  this.newstext = "Notload"
 }
</scrit>

Но ничего не вышло.

Ответы

▲ 1Принят

Засунь "вне" внутрь. Например в плагин.

Но если очень хочется, то можно через замыкание в лямбде.

<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>
▲ 1

Изменение состояние Vue из "вне" противоречит философии и стандартам "хорошего кода" Vue. Как вам написал "eri" - лучший способ изменить переменную Vue - изменить её внутри самого Vue и для этого необходим Vuex.

Vuex - это пожалуй лучший и самый безопасный (без сюрпризов) способ изменить переменную Vue вне компонента Vue. Vuex - это хранилище Vue, создано для обмена информацией между компонентами и для ситуаций как у Вас.

Есть ещё варианты с костылями, к примеру: тык (нагуглил ещё десяток, погуглите) и, возможно поможет Vue метод watch, но я не знаю конкретно что Вам нужно, по этому вероятно watch не решит Вашу проблему. Опять же, лучше всего смотрите в сторону Vuex и изменяйте переменные Vue через него.