VueJS:为啥这个数据属性没有在开发工具中的点击事件上更新?

Posted

技术标签:

【中文标题】VueJS:为啥这个数据属性没有在开发工具中的点击事件上更新?【英文标题】:VueJS: Why this data property doesn't updated on click event in Dev Tools?VueJS:为什么这个数据属性没有在开发工具中的点击事件上更新? 【发布时间】:2018-03-18 07:19:13 【问题描述】:

在下面的代码中,getWidth 事件处理程序(在methods 对象中定义)更新了data.width 属性。随着它的更新,变量 width 应该在 VueJS 的 Chrome 插件中实时显示。

但是,该实时更新不会显示在 Vue DevTools 中。我不确定代码是否有问题或者我做错了什么。插件不是问题,因为我也在 Firefox 中测试过。

HTML

<div id="app">
  <p :style="width: 200 + 'px'" class="box">msg</p>
  <button v-on:click="getWidth">New Width</button>
</div>

JS

new Vue(
  el: '#app',
  data: 
    msg: 'Test Message',
    mywidth: ''
  ,
  methods:  
    getWidth: function()
      this.mywidth = 20 * 2;
    
  
)

【问题讨论】:

大部分 JS 函数调用需要 () 来执行函数。我也是 Vue 的新手,所以不确定是否需要。但是在你有 v-on:click="getWidth" 的地方,如果你在 getWidth 的末尾添加 () 会发生什么。所以 v-on:click="getWidth()" @DylanWright () 不需要执行该方法。但是,如果您有一个想要传递给方法的变量,那么您可以使用 () 将其传递为 (width) mywidthwidth 有什么关系? @user2486 他们不相关。 好吧,你在

中使用了 width,它在提供的代码中没有出现。

【参考方案1】:

发生这种情况是因为您实际上并未在任何地方使用您的 mywidth 数据属性。

Vue DevTools 仅在代码中访问时更新其对 Vue 组件数据属性的引用,而不是在设置时更新。

只需在某处使用该数据属性(例如将 mywidth 放入模板中),它就会在 Vue DevTools 扩展中更新。

【讨论】:

@appu 这是假设您在说“变量 width 应该在 VueJS 的 Chrome 插件中实时显示”并且您的意思是 mywidth 时输入错误。您的组件没有定义 width 属性。

以上是关于VueJS:为啥这个数据属性没有在开发工具中的点击事件上更新?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 vuejs 子组件数据更改更新父数据也没有显式 $emit?

数据()中的Vuejs Html标签/属性

循环遍历 Vuejs 中的 mapstate 计算属性

VueJs/ChartJs - 单文件组件计算属性仅在我单击 Vue 开发工具中的组件时呈现

为啥在 vuejs2 中我的默认道具没有传递给我的子组件?

输入元素中的vuejs svg元素对点击事件没有反应