【发布时间】:2021-03-21 04:11:53
【问题描述】:
这是一个 laravel vuejs 项目。这是我的产品页面的照片:
产品本应显示在该页面上,但在我单击搜索按钮之前它完全为空。点击搜索按钮后,页面加载产品,搜索选项也正常工作。
我的代码是:
web.php ->
Route::get('/', 'App\Http\Controllers\Mastercontroller@index');
Route::get('/search', 'App\Http\Controllers\Mastercontroller@search');
Route::any('{slug}', 'App\Http\Controllers\Mastercontroller@index');
Mastercontroller.php ->
<?php
namespace App\Http\Controllers;
use App\Models\myproductcase;
use Illuminate\Http\Request;
class Mastercontroller extends Controller
{
public function index(){
return view('welcome');
}
public function search(Request $r){
$search = $r->get('q');
return myproductcase::where('name','LIKE','%'.$search.'%')->get();
}
}
产品页面->
<template>
<div>
<div class="search"><input v-model="search" type=text></input><button
@click.prevent="makesearch()">Search</button></div>
<div class="product-list">
<div v-if="showsearch==true">
<div v-for="getresult in getdata" v-bind:key="getresult.id">
<div class="product">
<h1>{{getresult.name}}</h1>
<h3>{{getresult.price}}</h3>
<p>{{getresult.description}}</p>
</div>
</div>
<div v-if="showsearch==false">
no data found
</div>
</div>
</div>
</div>
</template>
<script>
export default{
data(){
return{
search : '',
showsearch : false,
getdata : []
}
},
methods : {
async makesearch(){
fetch('/search?q='+this.search).then(hi=>hi.json()).then(hi=>{
console.log();
this.getdata = hi;
this.search = '';
this.showsearch = true;
}).catch(err=>{
console.log(err);
});
}
},
}
</script>
【问题讨论】:
-
问题是,在我点击搜索按钮之前没有加载产品,我希望产品应该自动显示,搜索选项应该像过滤器一样工作
-
(1) 您想在页面加载后立即执行搜索吗? (2) 在文本框中输入时,想要在不点击搜索按钮的情况下执行搜索和显示数据?
-
如果您想尝试@NileshPatel 指定的 (2),请尝试使用 watch
-
@nilesh patel @bhucho no 兄弟,我试图在页面加载后立即显示所有产品。我得到了解决方案 - 感谢您的时间和想法