编程语言
首页 > 编程语言> > javascript-从浏览器的控制台触发VueJs $watch无法正常工作

javascript-从浏览器的控制台触发VueJs $watch无法正常工作

作者:互联网

我有这个main.js文件引导我的Vue应用程序.

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

var model = {
  a: 1,
  name: 'Abdullah'
}

var app = new Vue({
  el: '#app',
  data: model,
  router,
  template: '<App/>',
  components: {
    App
  },
  watch: {
    a: function(val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    }
  }
});

app.a = 23; //This triggers the watch function

在我的视图实例内部,我正在观察数据的任何变化.

上的任何更改都应触发监视并写入控制台.当我通过在main.js文件中更改a的值(例如app.a = 23)来触发它时,该手表工作正常.但是当我从浏览器控制台触发它时,这是行不通的.

每当更改a时,如何从浏览器控制台触发观看?

PS:我刚刚开始使用VueJS.

解决方法:

这里有几个问题.

首先,您有一个ID为app的div.所有浏览器都将具有id属性的HTML元素用作全局变量.因此,您有一个名为app的全局变量,该变量指向具有app ID的div.

其次,您在名为app的变量中捕获了新Vue()的结果.但是,由于您非常清楚地使用了构建系统(因为您正在使用导入),因此该应用程序在全局范围内不可用,因为几乎所有构建系统都将其编译的javascript包装在闭包中.

结果是您无法访问要更改的应用程序,但看起来好像是因为在全局范围内有一个完全独立的变量称为app可供您使用.

如果您想做您想做的事情,建议您将脚本更改为:

window.myApp = new Vue(...)

然后,您将可以转到控制台并键入

myApp.a = 23

并查看您期望的结果.

标签:vue-js,vuejs2,javascript
来源: https://codeday.me/bug/20191026/1932747.html