使用 keyup vuejs 和 laravel 进行即时搜索

Posted

技术标签:

【中文标题】使用 keyup vuejs 和 laravel 进行即时搜索【英文标题】:Instant Search with keyup vuejs and laravel 【发布时间】:2017-09-24 09:23:23 【问题描述】:

我尝试使用 vuejs 和 laravel 5.3 构建即时搜索,但不知何故它无法正常工作,没有显示错误

控制器(完整代码https://pastebin.com/6mQ4eWTf):

public function index(Request $request) 
        $search = $request->search;
        $items = Staff::where('nama', 'LIKE', '%'.$search.'%')->paginate(5);
        $response = [
            'pagination' => [
                'total'        => $items->total(),
                'per_page'     => $items->perPage(),
                'current_page' => $items->currentPage(),
                'last_page'    => $items->lastPage(),
                'from'         => $items->firstItem(),
                'to'           => $items->lastItem()
            ],
            'data'       => $items
        ];  

staff.js 方法(完整代码https://pastebin.com/NDxzqsyp):

methods: 
        getVueItems: function (page) 
            this.$http.get('/staffitems?page=' + page + '&search=' + this.search).then((response) => 
                this.$set('items', response.data.data.data);
                this.$set('pagination', response.data.pagination);
            );
            setTimeout(this.getVueItems, 5000);
        ,

刀片(完整代码https://pastebin.com/6uDZRryE):

<input v-on:keyup.enter="getVueItems" type="text" class="form-control" name="search" placeholder="Cari..." v-model="search"/>  

路线:

Route::get('/staffcrud', 'StaffController@Crud');
Route::resource('/staffitems', 'StaffController');

正确显示的数据(通过从 /staffitems?page=1&search=jon 获取带有或不带有搜索值的 json 响应进行测试),但不知何故,当我在输入搜索列中键入要搜索的单词时,我一完成就没有任何反应打字,可能刀片中的事件处理是错误的,或者我在 staff.js 中的方法有什么解决方案?

【问题讨论】:

我打算在输入完成后立即搜索,无需按回车... 还是不行... :(什么是去抖动? 是否进行了 http 调用? 是的,我确实有查询结果,但没有搜索结果。使用完整代码更新问题。 这是 Vue 2 还是 1? 【参考方案1】:

您应该在 mounted() 方法中添加去抖动功能:

mounted() 
    this.getVueItems = _.debounce(this.getVueItems, 5000); // i'm using lodash here.

【讨论】:

评论不用于扩展讨论;这个对话是moved to chat。【参考方案2】:

仅在刀片模板中使用:

v-on:keyup='vueGetItems'

因为您的即时搜索仅在输入键时触发。我希望这会奏效或与我联系以获取完整的工作代码。

【讨论】:

【参考方案3】:

要构建真正有效的即时数据库搜索,您应该考虑将 pusher 和 laravel echo 与 vuex 一起使用

你可以看看这个>>>Ethiel Adiassa's Live Search Tutorial with laravel and pusher

【讨论】:

以上是关于使用 keyup vuejs 和 laravel 进行即时搜索的主要内容,如果未能解决你的问题,请参考以下文章

使用 laravel 和 vuejs 导出 Excel

Laravel - Vuejs:删除重复的时间段

形成 laravel 和 vueJS

如何使用 laravel 和 vuejs 下载文件

使用 vuejs 和 laravel 在 URL 中传递参数

使用 Laravel 和 Vuejs 使用条形码扫描仪自动完成搜索