@click 事件不会更改 Vue.js 中的数据属性

Posted

技术标签:

【中文标题】@click 事件不会更改 Vue.js 中的数据属性【英文标题】:@click event not changing data property in Vue.js 【发布时间】:2020-12-06 20:34:42 【问题描述】:

我在 Vue.js 中有一个 v-for 循环。它必须遍历一个列表来创建按钮。我在它们上添加了一个点击事件,所以upUrl 发生了变化,并将它们的按钮索引作为其值:

    <div class="mt-3" v-for="(buttonPic, index) in buttonPics"
                      :key="buttonPic"           
    >
    <button class="btn btn-sm btn-success"
    @click="upUrl= index">
    buttonPic  </button>
    </div>

我在data() 中有upUrl:null,但查看 Vue Google Chrome 控制台,我可以看到 upUrl 从未更新,并且始终等于 null

我尝试过使用@click="upUrl= this.index"&gt;,但出现错误:'index' is defined but never used

【问题讨论】:

【参考方案1】:

它应该可以工作,检查以下示例:

Vue.config.devtools = false;
Vue.config.productionTip = false;

new Vue(
  el: '#app',

  data() 
    return 
      upUrl: null,
      buttonPics: ["pic1", "pic2", "pic3"]

    
  ,
  watch: 
    upUrl(newVal, oldVal) 
      console.log(newVal, oldVal)
    
  

)
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>


<div id="app" class="container">

  <div class="mt-3" v-for="(buttonPic, index) in buttonPics" :key="buttonPic">
    <button class="btn btn-sm btn-success" @click="upUrl= index">
    buttonPic  </button>
  </div>


</div>

【讨论】:

我的错误是我在data() 中的upUrl 之前定义了buttonPics[ ]。我不知道订单很重要。 现在如果我取消 upUrl ,它在我的 Vue Google Chrome 控制台中不会改变。它的值是否会改变? 顺序无所谓,请分享如何登录控制台 我没有登录到控制台,我只是在看 Vue Google Chrome 控制台扩展。 数据正在发生变化,您可以通过观察它来证明这一点,就像我在编辑的答案中所做的那样

以上是关于@click 事件不会更改 Vue.js 中的数据属性的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 1.0中用v-for遍历出的li中的@click事件在移动端无效

Vue.js - 在点击事件上添加类

vue.js的基本操作

Vue @click 事件不适用于显示模式

vue.js的一些事件绑定和表单数据双向绑定

Vue.js - 如何在数据对象更改时向父组件发出?