访问组件内部的数据变量

时间:2018-09-06 06:45:43

标签: javascript vue.js vuejs2 vue-component

我使用

建立了Vue信息库
  

vue初始化webpack我的应用

现在,我的main.js就是这样-

//使用import命令加载的Vue构建版本 //(仅运行时或独立运行)已在webpack.base.conf中设置为别名。

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

Vue.component('todo-item', {
  template: '<li>{{ todo }}</li>',
  props: ['todo']
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App :groceryList="groceryList"/>',
  data:{
    message: 'abcdefghi',
    groceryList: [
      { id: 0, text: 'Vegetables' },
      { id: 1, text: 'Cheese' },
      { id: 2, text: 'Whatever else humans are supposed to eat' }
    ]
  }
})

我的App.vue文件具有main.js中提到的ID为app的模板

<template>
  <div id="app">
    At Parent: {{ groceryList[1].text }}
    <br/>
    <div>{{ message }}</div>
    <router-view/>
    <Table/>
    <Users/>

  </div>
</template>

<script>
import Users from './components/Users'
import Table from './components/Table'
export default {
  name: 'App',
  components: {
    Users,
    Table,
  },
}
</script>

在这里,我一直收到cannot read property groceryList and message of undefined的错误。我已经阅读了vue的文档,据此我没有犯任何错误。那么,这是什么问题?

1 个答案:

答案 0 :(得分:1)

main.js中,您应将data声明为一个函数,并将:message传递给App组件

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App :groceryList="groceryList" :message="message"/>',
  data () {
    return {
      message: 'abcdefghi',
      groceryList: [
        { id: 0, text: 'Vegetables' },
        { id: 1, text: 'Cheese' },
        { id: 2, text: 'Whatever else humans are supposed to eat' }
      ]
    }
  }
})

App.vue中,您需要将groceryListmessage声明为道具

<script>
import Users from './components/Users'
import Table from './components/Table'
export default {
  name: 'App',
  props: ['message', 'groceryList']
  components: {
    Users,
    Table,
  },
}
</script>