iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue如何用this.$set改变数组里的某个值
  • 394
分享到

Vue如何用this.$set改变数组里的某个值

摘要

Vue用this.$set改变数组里的某个值 <!DOCTYPE html> <html lang="en"> <head> <

Vue用this.$set改变数组里的某个值

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-Scalable=no"
    />
    <meta Http-equiv="X-UA-Compatible" content="ie=edge" />
    <script src="https://cdn.suoluomei.com/common/js2.0/vue/v2.5.16/vue.js"></script>
    <title>表格数据分页</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="vue">
      <div id="app">
        <p v-for="item in items" :key="item.id">{{item.message}}</p>
      </div>
    </div>
  </body>

  <script>
    new Vue({
      el: "#vue",
      data: {
        items: [
          { message: "one", id: "1" },
          { message: "two", id: "2" },
          { message: "three", id: "3" },
        ],
      },
      methods: {},
      mounted() {
        let that = this;
        // this.items[0] = { message: "first", id: "4" }; //此时对象的值更改了,但是视图没有更新
        let art = { message: "first", id: "4" };
        this.$set(this.items, 0, art); //$set 可以触发更新视图
      },
    });
  </script>
</html>

补充知识:

下面看下vue中this.$set()的用法----更新数组和对象的值

我们先看看官网给出的解释:

1、更新数组:

我们有一个数组,包括人员姓名和人员年龄两个属性。

想要实现在页面刚加载的时候改变姓名为李四的人的信息。

首先我们想到的是在mouted函数中直接修改name为李四的人的信息

this.itemList[1] = {
      name: '李思思',
      age: 30
    }
    console.log(this.itemList[1]);

但是这时候控制台打印的数据更新了,但是页面视图却没有更新。这时候我们就需要用到this.$set()来更新视图了。

 <!-- 使用$set更新数组的值 -->
    <ul>
      <li v-for="(item,index) in itemList" :key="index">
        <div>
          <span>姓名:</span>
          <span>{{item.name}}</span>
          <span>年龄:</span>
          <span>{{item.age}}</span>
        </div>
      </li>
    </ul>

data() {
    return {
      itemList: [
        {
          name: "张三",
          age: 18,
        },
        {
          name: "李四",
          age: 20,
        },
        {
          name: "王五",
          age: 22,
        },
      ],
      person: {
        name: '前端劝退师'
      }
    }
  },
  mounted() {
    // 要求
    // 修改数组中姓名为李四的人的信息
    // this.itemList[1] = {
    //   name: '李思思',
    //   age: 30
    // }
    // console.log(this.itemList);
    console.log("======================");
    this.$set(this.itemList, 1, {
      name: '李思思',
      age: 30
    });
  },

2、更新对象:

eg:给对象添加一个属性并赋值,上代码:

 <!-- 使用$set更新对象的值-----给对象添加属性 -->
    <div style="display:flex;">
      <p>{{person.name}}</p>
      <el-input v-model="person.score" style="width:200px;"></el-input>
    </div>
    <el-button @click="addScore">自定义成绩</el-button>

 methods: {
    addScore() {
      this.person.score = "60"
      console.log(this.person);
      // this.$set(this.person, "score", "60");
    }
  }

在button事件点击的时候给person对象添加score属性,发现:

我们发现控制台打印的结果显示给person对象添加了score属性并赋值了60,但是在页面上并没有更新新加的score属性和它对应的值,这时候便使用this.$set()来更新视图层了。

methods: {
    addScore() {
      // this.person.score = "60"
      // console.log(this.person);
      this.$set(this.person, "score", "60");
    }
  }

这时候就显示合适了。

注意:this.$set( target, key, value )

target:要更改的数据源(可以是对象或者数组)

key:要更改的具体数据

value :重新赋的值。

到此这篇关于Vue用this.$set改变数组里的某个值的文章就介绍到这了,更多相关Vue用this.$set改变数组某个值内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue如何用this.$set改变数组里的某个值

本文链接: https://www.lsjlt.com/news/175235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作