首页 > 其他分享 >Vue 对象 数组 添加/修改 数据

Vue 对象 数组 添加/修改 数据

时间:2024-12-31 16:18:52浏览次数:1  
标签:set 数组 vue Vue student hobby 添加 name

注意:在vm(data)的根数据,不能使用 Vm.set() /vm.$set()

一、监视

1、vue会监视data中所有层次的数据、

2、对象数据

a、对象中添加属性,vue默认不做响应

b、对象添加属性,vue做响应,通过如下api

Vue.set(target, 属性, 值)
vue.$set(target, 属性, 值)

3、数组数据

a、使用api

push() //最后一个添加
pop()  // 删除最后一个
unshift() // 添加第一个
shift() //删除第一个
sort() // 排序
reverse() // 反转
splice(索引, 数量, 新值) // 替换

b、使用vue.set()

Vue.set(target, 索引, 值)
vue.$set(target, 索引, 值)

4、总结

对象响应:添加属性使用Vue.set()api,修改属性可以直接修改

数组响应:添加修改都要使用 api

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据响应式</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="container">
        <button @click="student.age++">年龄+1岁</button> <br>
        <button @click="addSex">添加性别属性,为男</button> <br>
        <button @click="changeSex">修改性别</button> <br>
        <button @click="addFriend">在列表首位添加一个朋友</button> <br>
        <button @click="changeName">修改第一个朋友的名字为:张三</button> <br>
        <button @click="addHobby">添加一个爱好</button> <br>
        <button @click="changeHobby">修改第一个爱好为:开车</button> <br>
        <button @click="filterSmoke">过滤爱好中的抽烟</button>



        <h2>姓名:{{student.name}}</h2>
        <h2>年龄:{{student.age}}</h2>
        <h2 v-show="student.sex">性别:{{student.sex}}</h2>
        <h2>爱好</h2>
        <ul>
            <li v-for="h in student.hobby">
                {{h}}
            </li>
        </ul>
        <h2>朋友们</h2>
        <ul>
            <li v-for="f in student.friends">
                {{f.name}}---{{f.age}}
            </li>
        </ul>
    </div>
    <script type="text/javascript"> 
        const vm = new Vue({
            el: "#container",
            data:{
                student:{
                    name: 'jojo',
                    age:40,
                    hobby: ['吸烟', '喝酒', '烫头'],
                    friends :[
                        {name: 'jack', age:30},
                        {name:'tom', age:35}
                    ]
                }
            },
            methods: {
                addSex(){
                    Vue.set(this.student, 'sex', '男')
                    vue.$set(this.student, 'sex', '男')
                    this.$set(this.student, 'sex', '男')


                },
                changeSex(){
                    this.student.sex = '女'
                },
                addFriend(){
                    this.student.friends.unshift({name: 'rose', age:20})
                },
                changeName(){
                    this.student.friends[0].name = '张三'
                },
                addHobby(){
                    // this.student.hobby.push('学习')
                    this.$set(this.student.hobby, this.student.hobby.length, '学习')
                },
                changeHobby(){
                    this.student.hobby.splice(0,1,'开车')
                },
                filterSmoke(){
                    this.student.hobby = this.student.hobby.filter((h) => {
                        return h !== '吸烟'
                    })
                }
            },    
        })
    </script>
</body>
</html>

 

标签:set,数组,vue,Vue,student,hobby,添加,name
From: https://www.cnblogs.com/wt7018/p/18644246

相关文章

  • Vue 3 从入门到进阶:快速上手指南
    Vue3从入门到进阶:快速上手指南Vue3是Vue.js的最新版本,引入了许多强大的新特性,如CompositionAPI、全新的响应式系统等,为开发者提供了更高的灵活性和性能优化。本文将带你快速了解Vue3的核心概念,并提供代码示例帮助你上手。一、Vue3新特性概览1.CompositionAPIC......
  • Python+Django智慧农业小程序(Pycharm Flask Django Vue mysql)
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍当今社会已经步入了科学技术进步和经济社会快速发展的新时期,国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统智慧农业采取了人工的管......
  • 国标GB28181软件LiteGBS遇到录像机添加摄像机后,出现小画面显示大画面不显示如何处理?
    随着视频技术的不断进步,视频监控、直播、执法记录仪等多种视频资源的应用场景愈发广泛且多样化。这些视频资源不仅在数量上快速增长,更在质量、格式及编码标准等方面展现出极高的多样性。因此,为了实现对这些资源的有效整合和统一管理输出,信息化项目中对于视频综合接入能力的需求愈......
  • java基于springboot+vue的视频点播系统数据与分析python+nodejs+php-计算机毕业设计
    目录功能和技术介绍具体实现截图开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于浏览器的方式进行访问,采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具Intelli......
  • python+vue基于django/flask的智慧博物馆预约平台java+nodejs+php-计算机毕业设计
    目录技术栈和环境说明具体实现截图系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言开发,MySQL为后......
  • 雷池WAF添加自定义规则时,当匹配目标是 url,匹配内容 包含 # 时,# 后面的内容会被忽略
    原因后面的部分不会被当作请求发送到服务器,部署在服务器侧的雷池自然也无法接收到。解决方案一般vue的哈希路由模式会出现这种情况,建议用户改用vue的history模式参考在Vue.js中Vue路由管理器(VueRouter)支持两种模式:哈希模式和HTML5History模式。默认情况下,VueRo......
  • 给 Python 脚本的运行添加进度条(转)
    给Python添加进度条 假设我们有一个循环:foriinrange(100):do_something()#这里做某些事假设do_something()很慢,且运行时间不稳定,当我们运行时,我们并不知道运行到哪里了。我们引入一个进度条。fromtqdmimporttrangeforiintrange(100):do......
  • Hive添加udf
    一、引用<dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>1.2.1</version></dependency><!--https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-......
  • Dictionary 添加重复的键值对
    Dictionary添加重复的键值对|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-----------......
  • C语言数组名的理解
    一维数组intmain(){ inta[]={1,2,3,4}; printf("%zu\n",sizeof(a)); printf("%zu\n",sizeof(a+0)); printf("%zu\n",sizeof(*a)); printf("%zu\n",sizeof(a+1)); printf("%zu\n",sizeof(a[1])); prin......