2016-07-15 206 views
0

我得到類似這樣〜2000個錯誤:渲染列表

[Vue warn]: Duplicate value found in v-for="task in tasks": "}". Use track-by="$index" if you are expecting duplicate values.

API響應:

{"data":[{"id":1,"name":"Molestiae aut voluptatum omnis ratione aut.","body":"Laudantium itaque qui qui eius temporibus doloremque officia. Facilis quam aut sunt ipsum eum repellendus nam. Qui doloremque ipsam at sapiente voluptate."}, 
{"id":2,"name":"Nihil sed et ut sapiente ut iusto molestiae.","body":"Ut est doloremque accusantium dolore. Amet dolorem quia omnis quia eos et id omnis. Sunt facilis provident dolorem nisi voluptatibus omnis. Vel accusamus in nisi modi."}, 
{"id":3,"name":"Et et quis natus temporibus dolores quia.","body":"Vitae vitae adipisci dignissimos doloribus explicabo recusandae et. Officiis qui dicta nihil voluptatum aliquid odio. Sit sit doloremque eos minus neque cupiditate eaque qui. Rem nihil nesciunt tenetur quas aut. Sit eligendi unde doloribus consequuntur eius."}, 
{"id":4,"name":"Rem eveniet officiis voluptatem et.","body":"Vitae qui qui totam vel ex quae adipisci. Iure porro qui quia iste culpa quisquam. Hic voluptatum qui tenetur temporibus soluta voluptates corporis."}, 
{"id":5,"name":"Vel dolor nulla quibusdam animi molestias quis voluptatem.","body":"Dolorem deserunt velit porro autem. Beatae sit est quae eum suscipit. Velit tempora aperiam illum autem unde esse mollitia libero. Et consequatur perferendis voluptatem harum necessitatibus delectus inventore."}, 
{"id":6,"name":"Maiores in accusantium aliquam doloremque.","body":"Dolores adipisci porro sunt velit dolores omnis omnis. Reiciendis a maiores nesciunt qui vel necessitatibus nisi. Facere est iste distinctio ipsam labore pariatur. Modi unde consequuntur veniam alias minima. Dignissimos voluptatem iste quas quidem et."}, 
{"id":7,"name":"Ea et nesciunt quia asperiores sed quia dicta.","body":"Facilis eum magnam inventore perferendis dignissimos consequatur. Dolorum est illum reiciendis sunt at et labore."}, 
{"id":8,"name":"Nemo distinctio harum autem et velit voluptates.","body":"Impedit ea tenetur sapiente sapiente ipsa maiores nam omnis. Eos nisi dignissimos pariatur nam."}, 
{"id":9,"name":"Omnis quis et quia est veniam aut sunt porro.","body":"Eos rem itaque enim eum. Suscipit eaque harum consequatur quaerat. Itaque unde exercitationem saepe harum. Fugit ducimus et et ex."}]} 

任務組成:

<template> 
    <ul> 
    <li v-for="task in tasks"> 
     {{ task.name }} 
    </li> 
    </ul> 
</template> 

    <script> 
    export default { 
     data() { 
     return { 
      tasks: [] 
     } 
     }, 

    ready() { 
    this.$http.get('/api/tasks').then((response) => { 
     this.tasks = response.data 
    }, (response) => { 
     // error 
    }) 
    } 
} 

當我嘗試將track-by="$index"添加到v-for時,它創建了2,000 <li> s,其中沒有任何內容。它從哪裏獲得2000?!

任何幫助表示讚賞。

+0

你正在使用哪個版本的vue-resource? –

+0

0.9.3。我也用這個vue webpack樣板 - http://vuejs-templates.github.io/webpack/proxy.html。這似乎是我的問題。 – Chris

+0

您是否嘗試過使用['responde.json()'](https://github.com/vuejs/vue-resource/blob/master/docs/http.md#response)方法? –

回答

0

試試這個:

ready() { 
    this.$http.get('/api/tasks').then((response) => { 
     this.tasks = response.data.data 
    }, (response) => { 
     // error 
    }) 
} 
1

好像this.$http.get沒有得到它作爲JSON和你只是v-for通過串荷蘭國際集團因爲在它的2206個字符。

你的服務器是否發送正確的http頭文件?

一個臨時的解決可能是:

this.tasks = JSON.parse(response.data.data) 

雖然,你真的應該考慮得到正確設置HTTP標頭。

+0

是的,我使用vue的webpack樣板,它有一個代理選項(因爲我的API是獨立於我的前端)。這似乎是將數據作爲字符串而不是JSON返回(從API獲取JSON之後)。我現在通過在我的api web服務器上設置一個'Access-Control-Allow-Origin:'*''標題來解決這個問題。 – Chris

+0

使用這個包:https://github.com/barryvdh/laravel-cors。這將有助於您進行跨源資源共享。也許你有兩個不同的域名,出於安全考慮,你不能向另一個域名請求,除非另一個域名允許你 –