【发布时间】:2018-08-30 01:18:45
【问题描述】:
我创建了一个搜索功能,根据所选标签显示相关项目,但我得到的结果值错误
到目前为止我做了什么
- 创建控制器函数并以 json 格式返回结果
- 在
app.js中创建路由 - 创建新组件以显示结果
- 提出 axios 请求将数据发送到控制器并重定向到新组件以获取结果
代码
controller
public function areas(Request $request){
$areas = Project::where('area', $request->area)->where('published', '=', 'y')->get();
return response()->json($areas, 200);
}
route in api.php
Route::get('areasearch', 'Api\SearchController@areas');
route in app.js
import AreasPage from './components/areassearch.vue'
{
path: '/areas',
name: 'areas',
props: true,
component: AreasPage,
},
search script + component link
// link
<a v-model.lazy="area" @click="areasearch">{{project.area}}</a>
//script
methods: {
//search in areas
areasearch() {
axios.get('/api/areasearch', {
params: {
area: this.area
}
})
.then(response => {
this.$router.push({
name: 'areas',
params: {
areas: response.data
}
})
})
.catch(error => {});
},
},
results component
<template>
<div>
<navbar></navbar>
<template v-if="areas.length > 0">
<div class="container-fluid counters">
<div class="row text-center">
<div v-for="area in areas" :key="area.id" :to="`/projects/${area.slug}`">
<li>{{area.title}}</li>
</div>
</div>
</div>
</template>
<template v-else>
<p>Sorry there is no area for you, try search new query.</p>
</template>
<footerss></footerss>
</div>
</template>
<script>
import navbar from './navbar.vue';
import footerss from './footer.vue';
export default {
props: ['areas'],
components: {
navbar,
footerss
},
}
</script>
问题
- 我的链接不像一个链接(当我将鼠标移到它上面时就像文本)
- 例如,如果我搜索
Jakarta区域,我得到的大部分结果是其area列为null的项目。
有什么想法吗?
【问题讨论】:
-
试试看
$request->area是否为空 -
@Hussein I
dd我的请求(我仍然在我的网络响应中重定向到新页面[] -
@mafortis,你为什么不使用其他东西,比如跨度或按钮而不是锚点
-
@Erubiel 任何对我有用的东西 :)
标签: laravel vue.js eloquent vuejs2