【发布时间】:2018-12-04 12:01:35
【问题描述】:
我正在尝试构建可用性轮播。它将显示一周中的哪几天,以及某人有空的时间。我正在使用 Laravel 和 vue.js。我已经做了web api,我可以按照路由获取数据对象
Route::group(['prefix' => '/{area}'], function () {
Route::get('/{tutor}/availability','Tutor\AvailabilityController@show');
});
在我的可用性控制器中使用这个
public function show(Request $request, Area $area, Tutor $tutor)
{
$availability = $tutor->availability()->get();
return response()->json([
'data' => $availability
], 200);
}
一切正常。
但是当我尝试将其拉入 Vue 时,什么也没有出现。我似乎无法弄清楚我可能会错过什么。
我使用以下方法将 vue 组件拉入刀片,并传入区域和导师 ID
<availability area-id="{{ $area->slug }}" tutor-id="{{ $tutor->slug }}">
</availability>
在Availability.vue 中,我认为我出错的地方是使用道具提取数据,但我真的不确定了。
<script>
$(document).ready(function() {
$("#availability").owlCarousel();
});
export default {
props: {
areaId: null,
tutorId: null
},
data () {
return {
availability: []
}
},
methods: {
getAvailability () {
axios.get( '/' + this.areaId + '/' + this.tutorId + '/availability').then((response) => {
console.log(response.json());
});
}
},
ready () {
this.getAvailability();
}
}
</script>
感谢您的帮助。
【问题讨论】:
-
使用 response.data 而不是 response.json(),另外我相信你应该在你的组件中使用 mount 或 created 而不是 ready
-
太棒了,谢谢。如果您想将其发布为答案,我会接受。我确实有后续行动。为了完成它,我会将 console.log 更改为 this.availability = response.data; ,并在模板中调用它,例如 {{ availability.sunday_end }} 。我想就是这样,还是我还得把它加到data中()
-
axios 响应对象具有包含请求响应的数据字段,在您的情况下是 json 对象,即您从 Laravel 返回的 {data: availability}。要获得可用性,您必须使用 response.data.data。