12 组件化的语法糖

vue组件相关

语法糖的写法
<div id="app">
   <!--3 使用组件-->
   <!--全是小写的-->
   <cpn2></cpn2>
</div>

<script src="../js/vue.js"></script>
<script>
//语法糖 注册全局组件
Vue.component('cpn1',{
 template:`
<div>
<h1>组件2</h1>
</div>
`,
});

//root组件
const app=new Vue({
 el:'#app',
 data:{
   message:'你好呀'
 },
 computed:{
 },
 methods:{
 },
//  语法糖 局部组件
 components:{
   'cpn2':{
     template:`
<div>
<h1>组件2</h1>
<cpn1></cpn1>
</div>
`,
   }
 }
})

</script>

模板的分离写法
<!--1. script标签,注意:类型必须是text/x-template-->
<!--<script type="text/x-template" id="cpn">-->
<!--<div>-->
   <!--<h1>组件2</h1>-->
<!--</div>-->
<!--</script>-->

<!--2. template标签-->
<template id="cpn">
   <div>template</div>
</template>

<script src="../js/vue.js"></script>
<script>
//语法糖 注册全局组件
Vue.component('cpn1',{
 template:'#cpn'
});

//root组件
const app=new Vue({
 el:'#app',
 data:{
   message:'你好呀'
 },
 computed:{
 },
 methods:{
 },
//  语法糖 局部组件
 components:{
 }
})
</script>
组件数据

组件不能访问Vue实例数据

Vue组件应该有自己保存数据的地方

组件对象也有一个data属性,也可以有methods等属性

data属性必须是一个函数

而且这个函数返回一个对象,对象内部保存数据

<!--2. template标签-->
<template id="cpn">
   <div>{{title}}</div>
</template>

<script src="../js/vue.js"></script>
<script>
<!--组件中的数据存放问题-->
Vue.component('cpn1',{
 template:'#cpn',
 data(){
   return{
     title:'abc'
   }
 }
});

//root组件
const app=new Vue({
 el:'#app',
 data:{
   message:'你好呀'
 },
 computed:{
 },
 methods:{
 },
//  语法糖 局部组件
 components:{
 }
})

</script>
组件方法
<div id="app">
   <!--3 使用组件-->
   <!--全是小写的-->
   <!--不共用同一个data-->
   <cpn></cpn>
   <cpn></cpn>
</div>
<!--2. template标签-->
<template id="cpn">
   <div>
       <h2>当前计数:{{counter}}</h2>
       <button @click="increment">+</button>
       <button @click="decrement">-</button>
   </div>
</template>

<script src="../js/vue.js"></script>
<script>
const obj=0;
<!--注册组件-->
Vue.component('cpn',{
 template:'#cpn',
 data(){
   return{
     counter:0
//      counter:obj  这个会引起连锁反应
   }
 },
 methods:{
   increment(){
     this.counter++;
   },
   decrement(){
     this.counter--;
   }
 }
});

//root组件
const app=new Vue({
 el:'#app',
 data:{
   message:'你好呀'
 },
 computed:{
 },
 methods:{
 },
//  语法糖 局部组件
 components:{
 }
})

</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuhuimingc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值