vue数据监测(set/$set)/对像/数据增删改查综合实例
首页->学习资料->web前端->vue教程->vue2 关键词: 发布时间:2024-01-04 00:43:30 浏览次数:470

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>p33-37:vue数据监测/对像/数据增删改查综合实例</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>

<body>


<div id="demo">
    <button @click="addAge(35)">添加年龄</button>
    <button @click="me.age++">年龄++</button>
    <button @click="addHobby('爬山')">添加一个爱好</button>
    <button @click="modifyHobby('音乐')">修改爱好:电影->音乐</button>
    <button @click="reverseHobby">翻转爱好</button>
    <button @click="addFriend">添加一个朋友汤姆</button>
    <button @click="modifyFriend">修改朋友汤姆的性别</button>
    <button @click="sortFriends">朋友按年龄排序</button>
    <dl>
        <dt>个人简介</dt>
        <dd>姓名:{{name}}</dd>
        <dd v-if="website">主页:{{website}}</dd>
        <dd v-if="me.age">年龄:{{me.age}}</dd>
        <dd>
            <dl>
                <dt>我的爱好:</dt>
                <dd v-for="(h,index) in hobbies">
                    {{h}}
                </dd>
            </dl>
        </dd>
        <dd>
            <dl>
                <dt>我的朋友们:</dt>
                <dd v-for="(f,index) in friends">
                    姓名:{{f.name}}-性别:{{f.sex}}-年龄:{{f.age}}
                </dd>
            </dl>
        </dd>
    </dl>

</div>
<script type="text/javascript">
    //创建vue实例
    const vm = new Vue({
        el: "#demo",
        data: {
            name: 'hurong',
            website: 'http://www.hu-rong.com',
            me: {},
            hobbies: ['打球', '电影', '游戏'],//数组操作
            friends: [//数组中的对象操作
                {name: '李四', sex: '男', age: 39},
                {name: '王五', sex: '女', age: 42},
            ],
        },
        methods: {
            addAge(val) {
                //vm.$set不能直接操作vm或vm.data,只能操作data中对像,下面这种会报错
                //vm.$set(this.data,'age',val)
                //vm.$set(this.me,'age',val)
                //也可以写成
                Vue.set(this.me, 'age', val)
            },
            addHobby(val) {
                /**
                 * 对数组的操作只能用如下方法:
                 * Api:push,pop,shift,unshift,splice,sort,reverse
                 * Vue.set()或vm.$set()
                 */
                this.hobbies.push(val)
            },
            modifyHobby(val) {
                //this.hobbies.splice(1, 1, val)
                //也可以这样
                vm.$set(this.hobbies, 1, val)
            },
            reverseHobby() {
                this.hobbies = this.hobbies.reverse()
            },
            addFriend() {
                /**
                 * 错误示例:
                 * 这相当于直接赋值,虽然vm._data.friend被修改了
                 * 但不会产生对像属性对应的get,set方法,vue不会重新渲染页面
                 */
                //this.friends[2]='{"name": "汤姆", "sex": "女"}'
                vm.$set(this.friends, 2, {name: '汤姆', sex: '女', age: 40})
            },
            modifyFriend() {
                this.friends[2].sex = '男'
            },
            sortFriends() {
                this.friends.sort((a, b) => {
                    return b.age - a.age || a.age - b.age
                })
            }
        },
        computed: {},
        watch: {},
    })

</script>
</body>
</html>


赞:(0)
踩:(0)
相关文章
初识vue
数据绑定:第一个vue例子
vue模板语法
vue数据绑定
el与data的两种写法/延迟挂载
vue数据代理-Object.definePropert
vue事件及事件修饰符prevent/stop/
vue计算属性computed
vue(深度)监视属性watch
vue绑定样式:class,:style
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
laravel页面静态化的方法
centos7.4 64位下swoole安装及配置
navicate连接mycat报1184错误
curl设置超时不起作用(CURLOPT_TIM
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:623篇
浏览数:1306209
粤ICP备18028092号-1  微信:hurong241