518 vue组件的data是函数,不是对象

组件可以访问Vue实例数据吗?


组件数据的存放


<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>

  <div id="app">
    <cpn></cpn>
    <cpn></cpn>
    <cpn></cpn>
  </div>

  <!--1.script标签, 注意:类型必须是text/x-template-->
  <!--<script type="text/x-template" id="cpn">-->
  <!--<div>-->
  <!--<h2>我是标题</h2>-->
  <!--<p>我是内容,哈哈哈</p>-->
  <!--</div>-->
  <!--</script>-->

  <!--2.template标签-->
  <template id="cpn">
    <div>
      <h2>{{title}}</h2>
      <p>我是内容,呵呵呵</p>
    </div>
  </template>

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

    // 1.注册一个全局组件
    Vue.component('cpn', {
      template: '#cpn',
      data() {
        return {
          title: 'abc'
        }
      }
    })

    const app = new Vue({
      el: '#app',
      data: {
        message: '你好啊',
        // title: '我是标题'
      }
    })
  </script>

</body>

</html>

为什么data是一个函数呢?

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>

  <!--组件实例对象-->
  <div id="app">
    <cpn></cpn>
    <cpn></cpn>
    <cpn></cpn>
  </div>

  <template id="cpn">
    <div>
      <h2>当前计数: {{counter}}</h2>
      <button @click="increment">+</button>
      <button @click="decrement">-</button>
    </div>
  </template>
  <script src="../js/vue.js"></script>
  <script>
    // 1.注册组件
    const obj = {
      counter: 0
    }
    Vue.component('cpn', {
      template: '#cpn',
      // data() {
      //   return {
      //     counter: 0
      //   }
      // },
      data() {
        return obj
      },
      methods: {
        increment() {
          this.counter++
        },
        decrement() {
          this.counter--
        }
      }
    })

    const app = new Vue({
      el: '#app',
      data: {
        message: '你好啊'
      }
    })
  </script>

  <script>
  // const obj = {
  //   name: 'why',
  //   age: 18
  // }
  //
  // function abc() {
  //   return obj
  // }
  //
  // let obj1 = abc()
  // let obj2 = abc()
  // let obj3 = abc()
  //
  // obj1.name = 'kobe'
  // console.log(obj2);
  // console.log(obj3);


  </script>

</body>

</html>

posted on 2020-08-20 16:21  冲啊!  阅读(167)  评论(0编辑  收藏  举报

导航