zoukankan      html  css  js  c++  java
  • Vue(十二)vue实例的属性和方法

    vue实例的属性和方法
    1. 属性
    vm.$el
    vm.$data
    vm.$options
    vm.$refs
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>vue</title>
        <script src="https://unpkg.com/vue"></script>
        <script>
    
            window.onload = function(){
    
                var vm = new Vue({
                    el:'#app',
                    data:{
                        msg:'Hello Word !',
                        name:'tom',
                        age:24,
                    },
                    show:function(){
                        console.log('show');
                    }
                })
    
                /**
                * 属性
                */
                //vm.属性名 获取data中的属性
                console.log(vm.msg);
    
                //vm.$el 获取vue实例关联的元素
                console.log(vm.$el); //DOM对象
                vm.$el.style.color='red';
    
                //vm.$data //获取数据对象data
                console.log(vm.$data);
                console.log(vm.$data.msg);
    
                //vm.$options //获取自定义属性
                console.log(vm.$options.name);
                console.log(vm.$options.age);
                vm.$options.show();
    
                //vm.$refs 获取所有添加ref属性的元素
                console.log(vm.$refs);
                console.log(vm.$refs.hello); //DOM对象
                vm.$refs.hello.style.color='blue';
            }
    
        </script>
    </head>
    
    <body>
    
        <div id="app">
            {{msg}}
    
            <h2 ref="hello">你好</h2>
            <p ref="world">世界</p>
            
            <hr>
    
            <h1 ref="title">标题:{{name}}</h1>
    
        </div>
    
    </body>
    
    </html>
    2. 方法
    vm.$mount()
    vm.$destroy()
    vm.$nextTick(callback)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>vue</title>
        <script src="https://unpkg.com/vue"></script>
        <script>
    
            window.onload = function(){
                /**
                * 方法
                */
                //vm.$mount()  手动挂载vue实例
                // vm.$mount('#itany');
                
                var vm = new Vue({
                    data:{
                        msg:'欢迎来到武汉',
                        name:'Tom'
                    }
                }).$mount('#app');
    
                //vm.$destroy() 销毁实例
                // vm.$destroy();
    
                // vm.$nextTick(callback) 在DOM更新完成后再执行回调函数,一般在修改数据之后使用该方法,以便获取更新后的DOM
                //修改数据
                vm.name='汤姆';
                
                //DOM还没更新完,Vue实现响应式并不是数据发生改变之后DOM立即变化,需要按一定的策略进行DOM更新,需要时间!!
                // console.log(vm.$refs.title.textContent);
                vm.$nextTick(function(){
                    //DOM更新完成,更新完成后再执行此代码
                    console.log(vm.$refs.title.textContent);
                });
            }
    
        </script>
    </head>
    
    <body>
    
        <div id="app">
            {{msg}}
    
            <h1 ref="title">标题:{{name}}</h1>
    
        </div>
    
    </body>
    
    </html>
    vm.$set(object,key,value)
    vm.$delete(object,key)
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>vue</title>
        <script src="https://unpkg.com/vue"></script>
        <script>
    
            window.onload = function(){
                var vm = new Vue({
                    el:"#app",
                    data:{
                        user:{
                            id:10010,
                            name:'Tom'
                        }
                    },
                    methods: {
                        //通过普通方式为对象添加属性时vue无法实时监视到
                        doUpdate:function(){
                            //this.user.name = 'Jam';
                            this.$set(this.user,'name','Jam');
                        },
                        doAdd:function(){
                            //this.user.age = 23;
                            //this.$set(this.user,'age',18); //通过vue实例的$set方法为对象添加属性,可以实时监视
                            //Vue.set(this.user,'age',18)
                            if(this.user.age){
                                this.user.age++;
                            }else{
                                Vue.set(this.user,'age',1)
                            }
                        },
                        doDelete(){
                            if(this.user.age){
                                Vue.delete(this.user,'age');
                            }
                        }
                    }
                })
            }
    
        </script>
    </head>
    
    <body>
    
        <div id="app">
            <h1>{{user.name}}</h1>
            <h1>{{user.age}}</h1>
            
            <button v-on:click="doUpdate">修改属性</button>
            <button v-on:click="doAdd">添加属性</button>
            <button v-on:click="doDelete">删除属性</button>
        </div>
    
    </body>
    
    </html>

    vm.$watch(data,callback[,options])

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>vue</title>
    	<script src="https://unpkg.com/vue"></script>
    	<script>
    
    		window.onload = function(){
    			var vm = new Vue({
    				el:"#app",
    				data:{
    					name:'Tom',
    					age:22,
    					user:{
    						id:10010,
    						name:'Maria'
    					}
    				},
    				watch:{ //方式2:使用vue实例提供的watch选项
    					age:function(newVal,oldVal){
    						console.log('age原值:'+oldVal+',age新值:'+newVal);
    					},
    					user:{
    						handler:(newVal,oldVal) => {
    							console.log('user原值:'+oldVal.name+',user新值:'+newVal.name);
    						},
    						deep:true //深度监视,当对象中的属性发生变化时也会监视
    					}
    				}
    			})
    			//方式1:使用vue实例提供的$watch()方法
    			vm.$watch('name',function(newVal,oldVal){
    				console.log('name原值:' + oldVal,'name新值:' + newVal);
    			},true)
    		}
    
        </script>
    </head>
    
    <body>
    
        <div id="app">
    		
    		<input type="text" v-model="name">
    		<h2>{{name}}</h2>
    
    		<hr>
    
    		<input type="text" v-model="age">
    		<h2>{{age}}</h2>
    
    		<hr>
    
    		<input type="text" v-model="user.name">
    		<h2>{{user.name}}</h2>
    
        </div>
    
    </body>
    
    </html>
    

      

  • 相关阅读:
    Spring配置多个数据源
    虚拟机内存结构
    Java中sleep,wait,yield,join的区别
    Java的四种引用方式
    Java 中的泛型详解-Java编程思想
    Java RTTI和反射
    linux 分析java 线程状态
    小容量的byteBuffer 读取大文本
    @Conditional 原理
    替换字符串占位符
  • 原文地址:https://www.cnblogs.com/yulingjia/p/8288273.html
Copyright © 2011-2022 走看看