• vue实例的属性和方法


     一、 vue实例的属性和方法

      1、属性

        1、常用属性

           vm.$el      #获取的是个dom对象可以点下面的属性

           vm.$data  #获取的是个。。。。

           vm.$options

           vm.$refs

        2、示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue实例的属性和方法</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="itany">
            {{msg}}
        
            <h2 ref="hello">你好</h2>
            <p ref="world">世界</p>
            <hr>
    
            <h1 ref="title">标题:{{name}}</h1>
        </div>
    
        <script>
            /*var vm=new Vue({
                // el:'#itany',
                data:{
                    msg:'welcome to itany'
                },
                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);//获取数据对象data下的属性
    
            //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>
        
    </body>
    </html>
    View Code

      2、方法

        1、与数据相关的方法

          vm.$set(object,key,value)    #为属性添加(修改)一个属性并且设置键和值,object为对象,key为键,value为值,由于通过绑定方法添加属性不会被实例对象所监视,所以通过$set方法就可以被监视。

          vm.$delete(object,key)             #删除实例属性

          vm.$watch(data,callback[,options])#用来观察实例中属性值的变化

        2、示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加和删除属性:$set、$delete</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="itany">
            <button @click="doUpdate">修改属性</button>
            <button @click="doAdd">添加属性</button>
            <button @click="doDelete">删除属性</button>
    
            <hr>    
            <h2>{{user.name}}</h2>
            <h2>{{user.age}}</h2>
        </div>
    
        <script>
            var vm=new Vue({
                el:'#itany',
                data:{
                    user:{
                        id:1001,
                        name:'tom'
                    }
                },
                methods:{
                    doUpdate(){
                        this.user.name='汤姆'
                    },
                    doAdd(){
                        // this.user.age=25; //通过普通方式为对象添加属性时vue无法实时监视到
                        // this.$set(this.user,'age',18); //通过vue实例的$set方法为对象添加属性,可以实时监视,局部方法。this指代的是实例对象即vm
                        // Vue.set(this.user,'age',22);//全局方法,也可写在实例外面,局部方法和全局方法用法相同但是就只缺一个$之差。vue指代的是vue对象
                        if(this.user.age){
                            this.user.age++;
                        }else{
                            Vue.set(this.user,'age',1);
                        }
    
                        // console.log(this.user);
                    },
                    doDelete(){
                        if(this.user.age){
                            // delete this.user.age; //无效
                            Vue.delete(vm.user,'age');//删除对象属性,vm=this
                            Vue.delete(this.user,'age');//删除对象属性
                        }
                    }
                }
            });
    
        </script>
        
    </body>
    </html>
    添加和删除对象属性
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>监视数据的变化:$watch</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="itany">
            <input type="text" v-model="name">
            <h3>{{name}}</h3>
            <hr>
            
            <input type="text" v-model="age">
            <h3>{{age}}</h3>
            <hr>
    
            <input type="text" v-model="user.name">
            <h3>{{user.name}}</h3>
        </div>
    
        <script>
            var vm=new Vue({
                el:'#itany',
                data:{
                    name:'tom',
                    age:23,
                    user:{
                        id:1001,
                        name:'alice'
                    }
                },
                watch:{ //方式2:使用vue实例提供的watch选项
                    age:(newValue,oldValue) => {
                        console.log('age被修改啦,原值:'+oldValue+',新值:'+newValue);
                    },
                    user:{
                        handler:(newValue,oldValue) => {
                            console.log('user被修改啦,原值:'+oldValue.name+',新值:'+newValue.name);
                        },
                        deep:true //深度监视,当对象中的属性发生变化时也会监视
                    }
                }
            });
    
            //方式1:使用vue实例提供的$watch()方法
            vm.$watch('name',function(newValue,oldValue){
                console.log('name被修改啦,原值:'+oldValue+',新值:'+newValue);
            });
            vm.$watch('name',function(newValue,oldValue){
                console.log('name被修改啦,原值:'+oldValue+',新值:'+newValue);
            }.true); //如果监视的是个对象,就要启用深度监视,但是监视后得到的原值和新值都是一样
    
    
        </script>
        
    </body>
    </html>
    监视实例属性

        3、与生命周期相关的方法

             vm.$mount()     #手动挂载实例

           vm.$destroy()  #注销实例

           vm.$nextTick(callback)   #dom更新完后执行回调函数

        4、示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue实例的属性和方法</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="itany">
            {{msg}}
        
            <h2 ref="hello">你好</h2>
            <p ref="world">世界</p>
            <hr>
    
            <h1 ref="title">标题:{{name}}</h1>
        </div>
    
        <script>
            /*var vm=new Vue({
                // el:'#itany',
                data:{
                    msg:'welcome to itany'
                },
                name:'tom',
                age:24,
                show:function(){
                    console.log('show');
                }
            });*/
    
            /**
             * 方法
             */
            //vm.$mount()  手动挂载vue实例
            // vm.$mount('#itany');
            var vm=new Vue({
                data:{
                    msg:'欢迎来到南京网博',
                    name:'tom'
                }
            }).$mount('#itany');
    
            //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>
        
    </body>
    </html>
    View Code
  • 相关阅读:
    如何将程序集(dll)安装到全局程序集缓存(GAC)中
    当 ftp 遇上 http Proxy
    sql server 2008 帶主鍵table 字段 數據類型修改
    SQL 按指定顺序进行排序
    当发布时报错: 找不到 obj\Debug\Package\PackageTmp\xxx.aspx 文件
    c# 简体 繁体 转换
    SQL SERVER 简体与繁体 定序 轉換
    匿名类型与Lambda表达式
    使用委托实现了在循环中调用不同的方法
    学习源代码的心得
  • 原文地址:https://www.cnblogs.com/xuanan/p/7854148.html
Copyright © 2020-2023  润新知