zoukankan      html  css  js  c++  java
  • vue改变了数据却没有自动刷新

    有两个按钮,按钮上有个number属性,当此值为偶数时,按钮显示为红色。
    最初的数据如下:"a": [{ name: "one" },{ name: "two",number: 2 }]
    现象如下:当点击第一个按钮时,数据变了,界面却没有相应刷新;这是再点击第二个按钮,发现第二个按钮是正常的,并且当第二个按钮刷新的时候,第一个按钮也跟着刷新了。
    原因在于:a.number=undefined,这是一个常量,当第一次渲染时,第一个按钮的class并没有和第一个对象的属性number进行绑定,所以当number变化时,不会触发界面刷新。当第二个按钮导致界面刷新时,第一个按钮也会跟着刷新界面。vue中提供了Vue.$forceUpdate()方法用于强制界面刷新。
    结论:在绑定属性时,不要绑定undefined的属性,否则无法及时触发界面刷新。

    <template>
      <div>
        <span v-for="(x,ind) in a"
          :key="ind"
          @click="clickSpan(x)"
          :class="{redNumber:x.number%2==0}">
          {{x.name}}: {{x.number}}
        </span>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          "a": [{ name: "one" },{ name: "two",number: 2 }]
        }
      },
      methods: {
        clickSpan(x) {
          if (!x.number) x.number = 0;
          x.number += 1
        }
      }
    }
    </script>
    <style>
    .redNumber {
      color: red;
    }
    * {
      font-size: 20px;
      user-select: none;
    }
    </style>
    
    

    参考资料

    vue列表渲染

  • 相关阅读:
    Silverlight 自定义表格 转
    Application_BeginRequest事件过滤恶意提交
    存储过程学习1
    我是博客园新博客
    努力将SQL Server像玩游戏一样熟练
    【Demo 0003】支持交互的应用
    【Demo 0003】支持交互的应用
    linux终端快捷键
    vim与windows/linux之间的复制粘贴小结
    vimgrep简单使用
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/10681423.html
Copyright © 2011-2022 走看看