vue组件

组件感觉好像是自定义标签:全局组件,所有的vue实例都可以是使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>component</title>
</head>
<body>
<div id="app">
  <my></my>
</div>
<script src="../js/vue.js"></script>
<script>
    // 全局组件,所有的vue实例都可以使用
    const my = Vue.component("my",{
        template: '<div><h1>哈哈哈</h1></div>'
    });
    const app = new Vue({
        el: '#app',
    })
</script>
</body>
</html>

局部组件,只有定义了组件的vue实例才可以使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>component</title>
</head>
<body>
<div id="app">
  <my></my>
</div>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        components: {
            // 局部组件
            my: {
                template: '<div><h1>局部组件</h1></div>'
            }
        }
    })
</script>
</body>
</html>

模板分离:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>component</title>
</head>
<body>
<div id="app">
  <my></my>
</div>
<template id="myCn">
    <div><h1>模板分离,局部组件</h1></div>
</template>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        components: {
            // 局部组件
            my: {
                template: '#myCn'
            }
        }
    })
</script>
</body>
</html>

组件传值:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>component</title>
</head>
<body>
<div id="app">
  <my></my>
</div>
<template id="myCn">
    <div><h1>模板分离,局部组件--组件的属性值:{{title}}</h1></div>
</template>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        components: {
            // 局部组件
            my: {
                template: '#myCn',
                // 因为组件复用的原则,这里
                // 要用方法,这样返回的对象就各自拥有,不会共用
                data: function () {
                    return {
                        title: '最美的不是下雨天,而是与你躲过雨的屋檐'
                    }
                }
            }
        }
    })
</script>
</body>
</html>

自定义属性,props的使用,可以给组件标签加属性。可以加多个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>component</title>
</head>
<body>
<div id="app">
  <my :content="myContent"></my>
</div>
<template id="myCn">
    <div><h1>模板分离,局部组件--组件的属性值:{{title}}---{{content}}</h1></div>
</template>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        data: {
          myContent: '内容信息'
        },
        components: {
            // 局部组件
            my: {
                template: '#myCn',
                // 因为组件复用的原则,这里
                // 要用方法,这样返回的对象就各自拥有,不会共用
                data: function () {
                    return {
                        title: '最美的不是下雨天,而是与你躲过雨的屋檐'
                    }
                },
                props: ['content']
            }
        }
    })
</script>
</body>
</html>

第一种方式:

props: ['movies','cmessage']

第二种方式:

props: {

movies: Array,

cmessage: {

type: String,

default: 'aaa' // 当不适用这个属性,这个值会默认使用

requried: true // 表示必传

}

}

// 如果使用数组时要注意

props: {

movies: {

type: Array,

default: function(){

return [] // 数组时要这样传,不能直接传[]

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值