vue实例的属性和方法

四、 vue实例的属性和方法

1. 属性

vm.$el
vm.$data
vm.$options
vm.$refs

2. 方法

vm.$mount()
vm.$destroy()
vm.$nextTick(callback)

vm.$set(object,key,value)
vm.$delete(object,key)
vm.$watch(data,callback[,options])
<!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);

        //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';


        /**
         * 方法
         */
        //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>
<!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方法为对象添加属性,可以实时监视
                    // Vue.set(this.user,'age',22);
                    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(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);
        });

    </script>

</body>
</html>
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇