首页 > 其他分享 >vue监听对象属性值发生变化

vue监听对象属性值发生变化

时间:2023-08-25 11:22:21浏览次数:64  
标签:username vue object watch newVal oldVal 监听 属性

监听对象属性object里面属性值的变化。

export default {
    data() {
        return {
            object: {
                username: '',
                password: ''
            }
        }
    }
}

 方法一:直接根据watch来监听。

export default {
    data() {
        return {
            object: {
                username: '',
                password: ''
            }
        }
    },
    watch: {
        'object.username'(newVal, oldVal) {
            console.log(newVal, oldVal)
        }
    }
}

方法二:利用watch和computed来实现监听,利用computed定义一个新属性,新属性使用object里面的某个属性值,再使用watch来监听这个新属性值。

export default {
    data() {
        return {
            object: {
                username: '',
                password: ''
            }
        }
    },
    computed: {
        username() {
            return this.object.username
        }
    },
    watch: {
        username(newVal, oldVal) {
            console.log(newVal, oldVal)
        }
    }
}

方法三:利用对象属性的deep = true来实现,只要对象属性里面的任何一个属性值发生改变,不论嵌套的多深,都会触发监听里面的handler方法。注意:如果是一个数组对象ArrayObject,也要加deep,如果该属性是一个数组Array,则不需要加deep。

export default {
    data() {
        return {
            object: {
                username: '',
                password: ''
            },
            array: ['1', '2'],
            arrayObject: [
                {
                    id: 1,
                    name: '1'
                },
                {
                    id: 2,
                    name: '2'
                }
            ]
        }
    },
    watch: {
        object: {
            deep: true,
            handler(newVal, oldVal) {
                //newVal和oldVal会包含formData里面的每一个属性值
                console.log(newVal, oldVal)
            }
        },
        array: {
            handler(newVal, oldVal) {
                //newVal和oldVal会包含formData里面的每一个属性值
                console.log(newVal, oldVal)
            }
        },
        arrayObject: {
            deep: true,
            handler(newVal, oldVal) {
                //newVal和oldVal会包含formData里面的每一个属性值
                console.log(newVal, oldVal)
            }
        }
    }
}

 

标签:username,vue,object,watch,newVal,oldVal,监听,属性
From: https://www.cnblogs.com/caihao/p/17656438.html

相关文章

  • [转]vue中的css深度选择器 :deep(<inner-selector>)、/deep/、>>>、::v-deep 到底是什
    原文地址:vue中的css深度选择器:deep(<inner-selector>)、/deep/、>>>、::v-deep到底是什么?-掘金vue中的css深度选择器概念与作用当<style>标签有scoped属性时,它的CSS只作用于当前组件中的元素,父组件的样式将不会渗透到子组件。如果你希望scoped样式中的一个选......
  • vue~layout模板页的使用
    模板页的重要性Vue项目中使用布局组件来创建页面布局的方式是完全可行的,而且在很多项目中都被广泛采用,包括像ruoyi这样的框架。这种模式有助于实现统一的页面布局结构,减少重复代码,并提高代码的可维护性。让我们具体分析一下你提到的ruoyi框架的做法:Layout组件:layout/i......
  • localstorage本地存储及token,vuex刷新数据丢失问题⚡⚡⚡
    1.vuex和axios安装,引入,使用1.1vuexa安装和使用vuex3.x版本的官网安装教程:安装|Vuexvuex4.x版本的官网安装教程:安装|Vuexnpminstallvuex--save2.在src下新建文件夹store,并在文件夹中新建文件index.js,如下:importVuexfrom'vuex'//引入user模块化modules......
  • 导入导出(Excel)vue
     导入导出(Excel)首先 vue安装插件 (最后有完整代码)npm install xlsx file-saver其次:简单的导出按钮代码:<template>  <div>    <el-button type="primary" @click="exportExcel">导出 Excel</el-button>    <input      type="file&qu......
  • 使用 docker 打包构建部署 Vue 项目,一劳永逸解决node-sass安装问题
    文章源于Jenkins构建Vue项目失败,然后就把node_modules删了重新构建发现node-sass安装不上了,折腾一天终于可以稳定构建了。犹记得从学node的第一天,就被node-sass折磨了一整天,后面本地没问题了然后服务器开始折磨了,这次又遇到,尝试了一次又一次,还是用本地包构建最稳,觉......
  • abp-vnext-pro 实战(九,前端vue和vben学习)
    vben效果 VbenAdmin(vvbin.cn) 对应的代码在 vue-vben-admin/src/views/demo/page/form/basic/data.tsatmain·vbenjs/vue-vben-admin(github.com){field:'time',component:'RangePicker',label:'起止日期',colProps:{......
  • vue2的源码github下载和本地启动调试源码
    1.下载源码:https://github.com/vuejs/vue2.安装依赖,命令行执行:yarn3.修改package.json的运行脚本scripts里面加上源码map定位的参数,在打包后页面引入使用时可以调试到源码: {"name":"vue",。。。"scripts":{//增加一个start的启动命令加入参数--sourcemap......
  • Springboot K8s Job 一次性任务 如何禁用端口监听
    问题:SpringBoot一次性任务执行时,也会默认监听服务端口,当使用k8sjob运行时,可能多个pod执行存在端口冲突解决办法:命令行禁用SpringBoot一次性任务启动时端口占用java-cp./XXX-Dspring.config.location=/home/XXXX.propertiesorg.springframework.boot.loader.Properties......
  • Vue动态创建组件实例并挂载到body
    方式一importVuefrom'vue'/***@paramComponent组件实例的选项对象*@paramprops组件实例中的prop*/exportfunctioncreate(Component,props){constcomp=new(Vue.extend(Component))({propsData:props}).$mount()document.body.appendChild(......
  • VUE- elementUI使用quill富文本编辑器(编辑文本、上传图片)
    准备工作:安装 yarninstall vue-quill-editormain.js//编辑器importVueQuillEditorfrom'vue-quill-editor'//引入样式import'quill/dist/quill.core.css'import'quill/dist/quill.snow.css'import'quill/dist/quill.bubble.css'......