欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Vue.set()实现数据动态响应的方法

程序员文章站 2022-07-09 22:49:03
在vue里面,我们操作最多的就是各种数据,在jquery里面,我们习惯通过下标定向找到数据,然后重新赋值 比如var a[0]=111;(希望上家公司原谅菜鸟的我写了不少...

在vue里面,我们操作最多的就是各种数据,在jquery里面,我们习惯通过下标定向找到数据,然后重新赋值

比如var a[0]=111;(希望上家公司原谅菜鸟的我写了不少这样的代码????)

下面上代码

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>document</title>
  <script src="./js/vue.min.js"></script>
</head>
<body>
  <div id="app">
     <ul>
       <li v-for="item in listdata">{{item}}</li>
    </ul>
    <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" v-text="he" @click="changedata()"></a>
  </div>
</body>
<script>
  new vue({
    el:"#app",
    data:{
      he:"点我",
      listdata:["a","b","c"]
     },
    methods:{
       changedata () {
         this.listdata[0]="d";
       }
      }
  })
</script>
</html>

当我点击按钮时候,发现没有任何变化,页面上还是a,b,c

Vue.set()实现数据动态响应的方法

vue当然不会这么菜呢

下面是伟大的vue内置的方法来了

vue.set() 官方解释: 设置对象的属性。如果对象是响应式的,确保属性被创建后也是响应式的,同时触发视图更新。这个方法主要用于避开 vue 不能检测属性被添加的限制。

我的理解就是触发视图重新更新一遍,数据动态起来

vue.set(a,b,c)

a是要更改的数据 b是数据的第几项 c是更改后的数据

解决上面数据不能更改后的代码

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>document</title>
  <script src="./js/vue.min.js"></script>
</head>
<body>
  <div id="app">
     <ul>
       <li v-for="item in listdata">{{item}}</li>
    </ul>
    <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" v-text="he" @click="changedata()"></a>
  </div>
</body>
<script>
  new vue({
    el:"#app",
    data:{
      he:"点我",
      listdata:["a","b","c"]
     },
    methods:{
       changedata () {
         vue.set(this.listdata,0,'x')
       }
      }
  })
</script>
</html>

我们可以看到,this.listdata数组的第一项已经被更改了

Vue.set()实现数据动态响应的方法

总结

以上所述是小编给大家介绍的vue.set()实现数据动态响应的方法,希望对大家有所帮助