Vue属性

1.$props

<body>
    <div id="app">
        <father></father>
    </div>
    <script src="js/vue.js"></script>
    <script>
        Vue.component('father',{
            template:`
                <div>
                    <h3>手机信息搜索</h3>
                    手机品牌:<input type="text" v-model="brand">
                    <child :name="brand"></child>
                </div>
            `,
            data(){
                return{
                    brand:''
                }
            }
        })

        Vue.component('child',{
            props:['name'],
            template:`
                <ul>
                    <li>手机品牌:{{show.brand}}</li>
                    <li>手机型号:{{show.type}}</li>
                    <li>手机价格:{{show.price}}</li>
                </ul>
            `,
            data(){
                return{
                    content:[    
                        {brand:'华为',type:"Mate20",price:3299},
                        {brand:'小米',type:"Mate20",price:3299},
                        {brand:'苹果',type:"Mate20",price:3299},
                        {brand:'三星',type:"Mate20",price:3299},
                        {brand:'魅族',type:"Mate20",price:3299},
                        {brand:'vivo',type:"Mate20",price:3299},
                        {brand:'oppo',type:"Mate20",price:3299}
                    ],
                    show:{brand:'',type:'',price:""}
                }
            },
            //侦听器
            watch:{
                name(){
                    if(this.$props.name){
                        // forEach
                        var found=false;
                        this.content.forEach((value,index) => {
                            if(value.brand===this.$props.name){
                                found=value;
                            }
                        })
                        this.show=found?found:{brand:'',type:'',price:""}
                    }
                }
            }
        })


        new Vue({
            el:"#app"
        })
    </script>
</body>

2.$options:获取的是vue实例中的选项,包含自定义选项

<body>
    <div id='app'>
        <button @click="chk">查看</button>
        <h1>{{base}}</h1>
        <h3>{{noBase}}</h3>
    </div>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el:"#app",
            customOption:'我是自定义选项',
            data:{
                base:"我是基础数据"
            },
            methods:{
                chk(){
                    console.log(this.$options);
                    console.log(this.$options.el);
                }
            },
            created(){
                this.noBase=this.$options.customOption
            }
            

        })
    </script>
</body>

3.$el:访问vue实例的根DOM元素

<body>
    <div id="app"></div>
    <script src="js/vue.js"></script>
    <script>
       var vm= new Vue({
            el:"#app"
        })
        console.log(vm.$el);
        vm.$el.innerHTML='<div>我是被替换的div标签</div>'
    </script>
</body>

4.$root获取根vue实例

<body>
    <div id="app">
        <my-component></my-component>
    </div>
    <script src="js/vue.js"></script>
    <script>
        Vue.component('my-component',{
            template:`
                <div>
                    <button @click="chk">查看根vue实例</button>
                </div>
            `,
            methods:{
                chk(){
                    console.log(this.$root);
                    console.log(this.$root===vm.$root);
                }
            }
        })
       var vm= new Vue({
            el:"#app"
        })
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值