23.组件模板变量分析又组件data为何必须是函数?

        组件内部是不可以直接访问 vue 的实例中的data,可以即使可以间接访问,如果将所有的数据都放在 Vue 实例中,Vue 实例就会变得非常臃肿。 

问题:组件怎么访问自己变量?

  •  vue组件应该有自己保存数据的地方 ,组件对象也有一个data属性;
  •  也可以由methods等属性,下面我们有用到;
  •  只是这个data属性必输是一个函数 ,而且这个函数返回一个对象,对象内部保存着数据;

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="vue">
  <cpn></cpn>
  <cpn2></cpn2>
</div>

<!--第一种写法-->
<!--script 标签,注意类型必须是 text/x-template -->
<script type="text/x-template" id="cpn">
  <div>
    <h2>{{title}}</h2>
    <p>我是内容,哈哈哈</p>
  </div>
</script>

<!--第二种写法-->
<!--template标签-->
<template id="cpn2">
  <div>
    <h2>{{title}}</h2>
    <p>我是内容,哈哈哈</p>
  </div>
</template>

<script src="../js/vue.js"></script>
<script>

  Vue.component('cpn', {
    template: '#cpn',
    data(){
      return{
        title:'我是标题1'
      }
    }
  })

  Vue.component('cpn2', {
    template: '#cpn2',
    data(){
      return{
        title:'我是标题2'
      }
    }
  })

  const app = new Vue({
    el:'#vue',
    data:{
      message:'你好!华为'
    }
  });

</script>

</body>
</html>

为什么组件data必须是函数?

        组件肯定是抽出来复用度高的模块,所以要考虑其数值隔离性,在高调用的过程中,互不影响其数值。

        因为前端的特殊性,如果用函数返回对象的话,那么其对象是相互独立,而不互相影响,但是一旦用常量的,就会影响其他调用者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值