Данные JSON не могут попасть в маршрутизатор Vue - PullRequest
0 голосов
/ 22 июня 2019

Ниже приведены данные JSON, которые я использовал для практического вызова API.Но когда я пытаюсь загрузить данные JSON, я не могу это сделать.

Я не знаю, почему я использую data(){.....

, data.json не может показатьв сети, но в консоли data.json читается так: img:

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


my data.json равно:

{
  "contents": [
    {
      "content": "456",
      "id": 2
    }
  ]
}

//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;
          })
        }
      })
<!-- This is my HTML -->

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

1 Ответ

0 голосов
/ 22 июня 2019

здесь Jsfiddle

сначала необходимо объявить компонент vue .... потому что тот, который у вас есть let list = {...}, не является компонентом, и маршрутизатор не распознаетэто, также ваши данные экземпляра vue не являются данными вашего компонента ... вам нужно передать массив как опору .... вот как вы это делаете:

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
      })
    }
  })
<div id="app">
      <router-view :contents = "contents"></router-view>
    </div>
...