组件里面不能访问vue实例的数据


- <template id="cpn">
- <div>
- <h2>{{message}}h2>
- <p>内容1p>
- div>
- template>
- <div id="app">
- <cpn>cpn>
- <cpn>cpn>
- div>

data需要写在这个代码里面,且是返回实例对象的函数形式,不像vue示例里面一样是对象类型
Vue.component("cpn",{})
如果写成了对象类型,报错如下:

正确写法:
- Vue.component("cpn",{
- template:"#cpn",
- data(){
- return{
- message:"abc"
- }
- }
- })
因为计数器原理简单,直接写不用函数也可以
- <button @click="counter++">+button>
- <button @click="counter--">-button>
- <div id="app">
- <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.注册组件
- Vue.component("cpn",{
- template:"#cpn",
- data(){
- return {
- counter: 0
- }
- },
- methods:{
- increment() {
- this.counter++
- },
- decrement() {
- this.counter--
- },
- }
- })
三个cpn实例非同一个data,因为data是函数,所以避免了counter值互相影响
- <div id="app">
- <cpn>cpn>
- <cpn>cpn>
- <cpn>cpn>
- div>

如果想要数据同时被影响,也就是data是对象类型

