javascript - 访问组件内的数据变量

标签 javascript vue.js vuejs2 vue-component

我使用

创建了一个 Vue 存储库

vue init webpack my-app

现在,我的 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 文件具有 id app 的模板,如 main.js 中所述

<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>

在这里,我不断收到无法读取属性groceryList和未定义消息的错误。我已经阅读了 vue 的文档,根据它我没有犯任何错误。那么,这里有什么问题呢?

最佳答案

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声明为 Prop

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

关于javascript - 访问组件内的数据变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52198011/

相关文章:

javascript - 在 JavaScript 中将两个字节转换为有符号 16 位整数

javascript - 来自节中 JSON 对象的节信息

typescript - 如何在 vue 组合 api 组件中使用 jest 进行单元测试?

javascript - 在创建的函数中访问 axios 响应数据 - Vue2

javascript - 使用 Enquire.js 和 Vue.js 查询浏览器的大小

javascript - 如何在单击的 li 上添加类并从 vue 2 中的 li 的任何位置删除旧类

javascript - 在 JavaScript 中从文本创建类

javascript - 如何在 v-time-picker 中禁用选择分钟?

vue.js - 如何在 Vuejs 中动态禁用 v-select 选项

javascript - 如何从 Wordpress Gutenberg ColorPicker 获取颜色以正确保存?