首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json数据不能进入Vue路由器

json数据不能进入Vue路由器
EN

Stack Overflow用户
提问于 2019-06-22 12:40:32
回答 1查看 271关注 0票数 0

下面是用于实践API调用的JSON数据。但是,当我试图加载JSON数据时,我无法做到。

我不知道为什么要用data(){.....

data.json无法在web中显示,但在控制台中,data.json的读取方式如下:

https://i.imgur.com/Hn41K92.png

我的data.json是:

代码语言:javascript
复制
{
  "contents": [
    {
      "content": "456",
      "id": 2
    }
  ]
}

代码语言:javascript
复制
//This is my Vue.js

let List={
      template:
      `<div>
        <p>
          <input type="text" v-model.trim="input">
          <a href="javascript:;" v-on:click="createHandler">Create</a>
        </p>
      <ol>
         <li v-for="(item,index) in contents" :key="item.id">
            {{ item.content }}
        </li>
      </ol>
      </div>`,
      data() {
        return {
          input: '',
          contents:[]
        };
      }
    let router= new VueRouter({
        routes:[
          {
            path:'/',
            name:'list',
            component:List
          },
          {
            path:'/update/:id',
            name:'update',
            component:Edit
          },
          {
            path:'*',
            redirect:'/'
          }
        ]

    })
      new Vue({
        el: "#app",
        router:router,
        mounted() {
          axios.get('http://localhost:3000/contents').then((res) => {
            console.log(res.data);
            this.contents = res.data;
          })
        }
      })
代码语言:javascript
复制
<!-- This is my HTML -->

<div id="app">
      <router-view></router-view>
    </div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 12:58:48

这是一个小提琴手

首先,您需要声明一个vue组件..。因为您拥有的let list = {...}不是一个组件,路由器也不识别它,您的vue实例数据也不是您的组件数据.你需要把数组作为道具.以下是你是如何做到的:

代码语言:javascript
复制
var list = Vue.component('list',{
      template:
      `<div>
        <p>
          <input type="text" v-model.trim="input">
          <a href="javascript:;" v-on:click="createHandler">Create</a>
        </p>
      <ol>
         <li v-for="(item,index) in contents" :key="item.id">
            {{ item.content }}
        </li>
      </ol>
      </div>`,
      props : ['contents'],
      data() {
        return {
          input: '',
        }
       }
      })

  let router= new VueRouter({
    routes:[
      {
        path:'/',
        name:'list',
        component:list
      },
      {
        path:'/update/:id',
        name:'update',
        component:Edit
      },
      {
        path:'*',
        redirect:'/'
      }
    ]
  })

   new Vue({
    el: "#app",
    router:router,
    data(){
      return {
        contents : []
      }
    },
    mounted() {
      axios.get('http://localhost:3000/contents').then((res) => {
       this.contents = res.data
      })
    }
  })
代码语言:javascript
复制
<div id="app">
      <router-view :contents = "contents"></router-view>
    </div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56715583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档