laravel - 如果再次单击路线链接,如何清除搜索字段
问题描述
我对 laravel 和 Vue.js 都很陌生。我遇到了一个错误/不便。我感谢您的帮助。
问题:
用户点击侧边栏中名为“Product”的链接,Product.vue 文件加载页面内容 div 中的产品列表。
有一个搜索栏可帮助用户搜索特定产品。
现在它显示了与搜索字符串匹配的产品列表,但页面的 url 仍然是相同的。
现在....如果用户点击返回原始链接。它不会重置搜索字段,因为即使在进行搜索时,URL 也不会改变。
Laravel 导航视图文件 :: nav.master.blade
<router-link to="/Product" class="nav-link">
<i class="fas fa-users nav-icon"></i>
<p>Products</p>
</router-link>
路由/父组件
let routes = [
{ path: '/product', component: require('./components/Product.vue').default },
];
const router = new VueRouter({
mode: 'history',
routes
});
const app = new Vue({
el: '#app',
router,
data:{
search: ''
},
methods:{
searchit: _.debounce(() => {
Fire.$emit('searching');
}, 1000)
}
});
产品.vue
export default
{
data(){
return{
products:{}
}
},
created() {
this.loadProducts();
Fire.$on('searching', () => {
let query = this.$parent.search;
axios.get('/api/findProduct?q=' + query )
.then( ({data}) => {
this.products= data;
})
.catch(()=>{
});
})
}
}
如何重置搜索字段。当用户单击导航时。
谢谢
解决方案
我建议你使用 EventBus 模式
见https://alligator.io/vuejs/global-event-bus/
事件总线.js
import Vue from "vue";
export const EventBus = new Vue();
Laravel 导航视图文件 :: nav.master.blade
<router-link to="/Product" class="nav-link" v-on:click.native="reloadProducts()">
<i class="fas fa-users nav-icon"></i>
<p>Products</p>
</router-link>
<script>
import { EventBus } from "../event-bus.js";
methods: {
reloadProducts() {
console.log("Event close");
EventBus.$emit("loadProducts");
}
}
};
</script>
产品.vue
import { EventBus } from "../../event-bus.js"; //Import event Bus
export default
{
data(){
return{
products:[] // Change by array
}
},
created() {
this.loadProducts();
//listen event loadProducts
EventBus.$on("loadProducts", () => {
this.loadProducts();
});
Fire.$on('searching', () => {
let query = this.$parent.search;
axios.get('/api/findProduct?q=' + query )
.then( ({data}) => {
this.products= data;
})
.catch(()=>{
});
})
}
}
推荐阅读
- c - 将结构保存到文件
- ansible - Ansible:正则表达式在列表中搜索特定字符串
- mysql - 根据行值选择数据库
- xml - 如何在odoo 13中插入特定记录usinf XML数据文件的ID
- python - Python api 调用在本地机器上运行良好,但在 Azure VM 上运行时失败
- flutter - 如何在谷歌地图中制作多个圆圈
- deep-learning - 是否可以对 LSTM 使用投票分类器?
- https - 从同一台机器访问时,NTLM 不能与 .NET48 上的 ASP.NET Core 2.1 的 Http.sys 一起使用 https 和通配符证书
- java - 此应用无权使用 firebase 身份验证 SH1 ,SH256
- python - 烧瓶; 渲染模板后是否可以将变量传递给我的 HTML 模板