【问题标题】:@click event not changing data property in Vue.js@click 事件不会更改 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

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component


    【解决方案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 控制台扩展。
    • 数据正在发生变化,您可以通过观察它来证明这一点,就像我在编辑的答案中所做的那样
    猜你喜欢
    • 2022-11-03
    • 2020-12-19
    • 2018-07-02
    • 2019-09-08
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多