四.Vue.js实例属性选项-数据操作

news/2024/7/10 2:54:14 标签: computed, watch, props, vue数据选项, vue

Vue创建实例化参数配置中,对数据进行处理的有 data、methods、propspropsData、computedwatch

 

var vm = new Vue({
    el: '#app',
    data: {
        name: '小虫',
        age: 3
    },
    methods: {
        addAge: function(){
            this.age++
        }
    }
});

1. data

data在new Vue中以一个对象方式传入,即data:{};而在组件中data以一个函数方式传入,即data: function(){ return {} },

函数的方式避免了多处使用同一组件,而导致同一对象导致数据发生改变。函数方式简单理解为使用时拷贝data所有属性

2. methods

methods对象存放的是方法,可以使用方法完成用户一些操作,如点击。方法中的 this 自动绑定Vue实例,参数$event为鼠标对象

3. props

props用于组件中,子组件通过定义props属性,父组件通过props参数规格,把值传给子组件。

props参数规格为Array<string> | Object,如:

props: ['name', 'age']、
props: {
    name: String, // 检测类型 
    age: {  // 检测类型 + 其他验证
        type: Number,  // String、Number、Boolean、Array、Object、Date、Function、Symbol
        default: 3,  // 默认值
        required: true,  // 是否为必填
        validator: function (value) {  // 验证函数
            return value >= 0 
        }
    } 
} 

4. propsData

propsData用于Vue.extend扩展构造器,构造器的数据传输,通过定义的props属性,用propsData填充数据,如下:

var Vexd = Vue.extend({
    template:'<div>{{name}}</div>',
	data:function(){return{}},
	props:['name']
});
new Vexd ({
    propsData:{
        name:'propsData设置值'
    }
}).$mount('header')

 

5. computed

computed监控自定义属性,该属性不在data里面,受data里面的属性值变化而变化,适合对多个属性值或者对象进行处理后返回一个结果值,简单理解为多个属性引起自定义值变化。如:全名:姓和名字、购物车总金额:商品单价和数量、全选:睡觉、玩、喝

// 默认使用computed getter属性获取值
var vm = new Vue({
    el: '#app',
    data: {
        price: 20,
        num: 2
    },
    computed: {
        total: function(){ 
            return this.price * this.num
        }
    }
});

// 使用getter监控变化后的值,setter监控属性发生变化时的回调
var vm = new Vue({
    el: '#app',
    data: {
        sleep: false,
        play: false
        drink: false
    },
    computed: {
        checkAll: { 
            get: function(){
                 return this.sleep & this.play & this.drink
            },
            set: function(newValue){ // total值发生变化执行,如更改total值,由price和num导致发生值变化不会执行
                this.sleep = newValue;
                this.play = newValue;
                this.drink = newValue;
            }
        }
    }
});

 

6. watch

watch监控data对象的属性,必须要在data存在该属性才能使用watch,可以监控变量或对象,适合一个数据影响多个数据。

监控路由input输入框的值特殊处理,如:总价:购买数量、购买价格、优惠券、折扣券等任意一个发生变化,都会自动跟踪变化;

// 默认为handler
var vm = new Vue({
    el: '#app',
    data: {
        total: 0
    },
    watch: {
        total: function (val, oldVal) {
          console.log('new: %s, old: %s', val, oldVal)
        },
    }
});


// 使用其他参数handler、immediate、deep
var vm = new Vue({
    el: '#app',
    data: {
        total: 0,
        jsn: {
            name: '小虫',
            age: 3
        }
    },
    watch: {
        jsn: {
            handler: function (val, oldVal) {
              console.log('new: %s, old: %s', val, oldVal)
            }, 
            immediate: true,  //刷新加载 立马触发一次handler
            deep: true  // 可以深度检测到 jsn对象的属性值的变化,若不使用则必须通过jsn.name方式去监测
        }
    }
});

 


http://www.niftyadmin.cn/n/1867390.html

相关文章

五.Vue.js实例属性选项-生命周期钩子

Vue创建实例化参数配置中&#xff0c;生命周期钩子有 beforeCreate、created、beforeMount、Mounted、beforeUpdate、updated、beforeDestroy、destroyed、actived、deactived、errorCaptured 1. beforeCreate &#xff08;使用频率低&#xff09; 实例化创建之前&#xff0c…

六.Vue.js界面绑定指令-元素、事件、属性绑定

界面通过绑定vue指令对dom进行操作&#xff0c;通过数据与dom的结合&#xff0c;完成渲染。按照vue绑定dom操作&#xff0c;将其分为操作dom内容节点、事件、属性 操作内容节点&#xff1a;v-text、v-html、v-model、v-show、v-if、v-else、v-else-if、v-for、v-pre、v-cloak、…

七.Vue.js自定义组件 - 组件创建及使用

什么是组件&#xff1f;组件能把页面分成独立的模块&#xff0c;实现代码重用&#xff0c;提高开发效率和代码质量&#xff0c;使得代码易于维护 。 Vue.js 组件分为全局组件、局部组件、动态组件&#xff0c;父子关系的组件数据交互用props&#xff0c;子组件向父组件的数据传…

十二.Vue.js路由Vue Router使用

vue router 主要用于url地址配置&#xff0c;实现更改浏览器历史访问记录、页面跳转、页面跳转不刷新、页面访问权限拦截、滚动条滚动到指定位置、设置界面title等功能。 主要方式有url中的 hash&#xff08;#&#xff09;方式和 history。 hash&#xff1a;可以通过window.h…

十三.Vue.js 状态管理Vuex

Vuex是一个状态管理的插件&#xff0c;管理过程包含了state&#xff08;数据源&#xff09;、view&#xff08;state绑定到视图&#xff09;、actions&#xff08;view改变同步改变数据源&#xff09;三个状态&#xff0c;页面刷新的时候vuex里的数据会重新初始化&#xff0c;导…

八. Vue.js数据更新后dom操作-vue.nextTick

Vue响应式并不是数据发生改变后DOM 立即发生改变&#xff0c;而是按一定的策略进行 DOM 的更新&#xff0c;所有当我们改变数据时&#xff0c;立即对改变的DOM处理时就会出错&#xff0c;最明显的就是使用v-if或v-for的时候&#xff0c;针对这种改变数据要对DOM操作&#xff0c…

十四.Vue请求axios

axios是基于Promise 用于浏览器和 nodejs 的 HTTP 客户端&#xff0c;有以下特征&#xff1a; 从浏览器中创建 XMLHttpRequest从 node.js 发出 http 请求支持 Promise API拦截请求和响应转换请求和响应数据取消请求自动转换JSON数据客户端支持防止 CSRF/XSRF axios使用&#x…

elmentui表格修改可点击排序元素

一. 表头排序默认点击表头进行排序&#xff0c;禁止点击表头进行排序&#xff0c;只有点击排序图标的时候再进行排序&#xff0c;添加样式即可&#xff1a; th { pointer-events: none; i { pointer-events: auto; } } 二. 表格点击排序异步请求&#xf…