【发布时间】:2017-11-30 22:25:45
【问题描述】:
我正在制作一个带有列表页面和详细信息页面(Item.vue)的应用程序。 从列表中,用户可以使用 localhost/item/12345 之类的 url 转到详细信息页面。 但是我无法使用 VueJS 和 Vue-router 为我的 Laravel 应用程序创建逻辑。
Laravel 5.4,
节点 6.11,npm 3.10.10,
axios 0.15.3、vue 2.3.4、vue-router 2.6.0
我的代码如下所示
Example.vue(用作列表页面)
<template>
<p class="card-text"><router-link v-bind:to="{ name:'item', params:{ id: item.id }}">
{{ item.title }}</router-link>
</p>
</template>
<script>
export default {
data(){
return{
$item:[]
}
},
mounted(){
var self = this;
axios.get('/item').then(function(response){
return self.item = response.data;
});
}
}
</script>
Item.vue
<template>
<p class="card-text">{{item.title}}</p>
<p class="card-text">{{item.content}}</p>
</template>
<script>
export default {
data(){
return{
$item:[]
}
},
mounted(){
var self = this;
axios.get('/item'+this.$route.params.slug
).then(function(response){
return self.item = response.data;
});
}
}
</script>
routes.js
import VueRouter from 'vue-router';
var routes=[
{
name:'item',
path:'/item/:id',
component:require('./components/Item.vue'),
props: true
}
];
export default new VueRouter({
routes
});
routes/web.js
Route::resource('item','ItemController');
Route::resource('item/{id}', 'ItemController@show');
ItemController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Items;
class ItemController extends Controller
{
public function index()
{
return Items::all();
}
public function show($id)
{
$item = Items::where('id', '=', $id)->firstOrFail();
return view('item.show', compact('item'));
}
}
app.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import router from './routes.js';
require('./bootstrap');
window.Vue = require('vue');
Vue.use(VueRouter);
Vue.component('example', require('./components/Example.vue'));
const app = new Vue({
router,
el: '#app'
});
显示列表页的警告消息
[Vue warn]: Property or method "item" is not defined on the instance but referenced
during render. Make sure to declare reactive data properties in the data option.
found in
---> <Item> at /var/www/laravel/resources/assets/js/components/Item.vue
<Root>
详情页面的错误消息
Error: Request failed with status code 500
【问题讨论】:
-
错误在
Item.vue请编辑您的问题并添加此文件代码 -
对不起,我修好了。
标签: laravel vue.js axios vue-router