Vue 04组件

创建组件的三种方式

组件中的data和methods

组件中的data是一个方法,且必须返回一个对象

<template id="temp">
    <div>
        <h3> {{count}}</h3>
        <input type="button" value="+" @click="add">
    </div>
</template>
<script>
    Vue.component('mycom1',{
        template: '#temp',
        data: function () {
            return {count:0}
        },
        methods: {
            add: function () {
                this.count++;
            }
        }
    })
</script>

组件切换 和 通过ref来获取DOM节点


使用component标签来实现切换组件

<component v-bind:is='组件名称'><component>

在标签和组件中加入 ref=“my”
可以通过 this.$refs.my. 什么来获取标签内容或者组件的方法和data 相当于document.getelementbyid这种方式

<h1 ref="my">ref</h1>
<temp :title="msg" @func="show" ref="zujian"></temp>
this.$refs.my.style.color = 'red';//相当于操作dom
this.$refs.my.innerText = '这是通过 this.$refs 改变的';

子父组件互相传值

父组件向子组件传值:在定义组件时,需要在props定义一个属性,即props:[‘title’],当使用组件时候,可以在组件中使用这个属性
v-bind:title=“msg”,指向的这个值是父组件中data中的值,这样就可以实现父组件向子组件传值,在子组件通过使用定义的这个组件来使用即title。
子组件向父组件传值:通过定义调用父组件中方法,在使用子组件的时候,传入一个自定义的事件指向父组件的方法v-on:func=“show”,在组件中的按钮被点击时触发的方法定义在子组件的方法 this.$emit(‘func’,传入的值),这样就可以使用方法把子组件的值传入到父组件中。

<temp v-bind:title="msg" @func="show"></temp>
<template id="temp1">
<!--    要显示父组件的值,传递过来的变量必须是模板中定义的变量-->
    <div>
        <input type="button" @click="showa" value="父组件方法">
        <h1>我是h1------->{{title}}</h1>
    </div>
</template>

<script>
    var temp = {//定义的组件对象
        props:['title'],
        template: "#temp1",//通过id找到对应的模板对应
        data:function(){
          return {
              msg: '这是子组件中msg',
              date:20
          }
        },
        methods: {
            showa:function () {
                this.$emit('func',this.data)//这个data是子组件的data=20,通过子组件调用父组件的方法传子组件值得方式,把值传入到父组件中
            }
        }
    }
    var vm = new Vue({
        el: '#app',
        data: {
            data: null,
            msg: '我是父组件的msg'
        },
        methods: {
            show: function (data) {
                this.data = data;
            },
        },
        components:{
            temp
        }
    })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值