如何在 Vue.js 应用程序中加载数据

Posted

技术标签:

【中文标题】如何在 Vue.js 应用程序中加载数据【英文标题】:How to load data in Vue.js app 【发布时间】:2018-06-23 11:44:50 【问题描述】:

我使用 vue cli webpack 生成了一个应用程序。现在我试图将一些数据加载到视图中但没有成功。这是当前状态的代码:

main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'

import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

Vue.config.productionTip = false
Vue.use(BootstrapVue)

/* eslint-disable no-new */
new Vue(
  el: '#app',
  router,
  components:  App ,
  template: '<App/>',
  data: 
    exchanges: [
      name: 'gdax', price: 1450,
      name: 'bitfinex', price: 1525
    ]
  
)

App.vue

<template>

  <div id="app" class="container">
    <h1>Arb Bot</h1>
    <router-view/>
  </div>
</template>

<script>
  export default 
    name: 'App'
  
</script>

<style>
  #app 
    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    color: #2c3e50;
    margin-top: 60px;
  
</style>

路由/index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Opportunities from '@/components/Opportunities'

Vue.use(Router)

export default new Router(
  routes: [
    
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    ,
    
      path: '/opportunities',
      name: 'Opportunities',
      component: Opportunities
    
  ]
)

机会.vue

<template>
  <div>
    <h2>Bitcoin prices</h2>
    <table>
      <tr>
        <td>Exchange</td><td>Price</td>
      </tr>
      <tr v-for="exchange in exchanges" :key="exchange.name">
        <td> exchange.name </td><td> exchange.price </td>
      </tr>
    </table>
  </div>
</template>

视图呈现正常,但 data 未加载,因此具有交换名称的表行未显示在浏览器中。

如何正确地将数据加载到视图中并打印表格?

谢谢

【问题讨论】:

exchanges 是根级数据属性。您必须将其作为属性传递给 Opportunities.vue 组件。 像这样:codesandbox.io/s/jjrw9rjy93。或者,使用像 Vuex 这样的状态管理系统。 有趣的Vuex版本codesandbox.io/s/oqvmp4rmz6 这是一个解释传递参数到组件***.com/a/34541828/6805529的答案 【参考方案1】:
el: '#app',

指的是 ID=app 的元素,在您的情况下是缺失的。

您可以通过为表格指定 id=app 来修复它

<table id="app">

【讨论】:

我添加了上面 App.vue 的代码。 id="app" 包含在那里

以上是关于如何在 Vue.js 应用程序中加载数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Vue.js 2 组件中加载时未定义 Webpack 外部 JS 文件

Safari不会在Apache上的Vue.js应用程序中加载预检CORS身份验证请求(XHR)

我在 vue js 样式标签中加载背景图像时遇到问题 [关闭]

在 Vue.js 中加载节点库

在 Vue.js 中加载时未检查复选框

将环境变量加载到 vue.js