Shopware 6:保存车辆实体后重新加载sw.vehicles.list路由
Shopware 6 保存实体后刷新列表路由的正确实现方式
在Shopware 6单页后台中,直接使用window.reload()刷新页面体验差且可能因路由跳转时机问题失效,推荐以下几种贴合SPA特性的实现方式:
方案一:通过路由参数触发列表页数据刷新
保存成功后跳转时携带临时refresh参数,列表页监听路由变化并重新加载数据:
保存组件修改代码
this.repository.save(this.sw_vehicles, Shopware.Context.api).then(() => { this.isLoading = false; this.processSuccess = true; // 跳转时携带唯一refresh参数 this.$router.push({ name: 'sw.vehicles.list', query: { refresh: Date.now() } }); }).catch((exception) => { this.isLoading = false; this.createNotificationError({ title: this.$t('sw-vehicles.import.errorTitle'), message: exception }); });
列表页组件(sw-vehicles-list)添加监听
在列表页的watch钩子中处理参数:
watch: { '$route'(to) { if (to.query.refresh) { this.loadData(); // 调用列表页原有数据加载方法 // 移除refresh参数避免残留 this.$router.replace({ query: {} }); } } }
方案二:清空实体缓存强制重新请求
Shopware的Repository默认缓存数据,保存成功后清空对应实体缓存,列表页会自动重新请求接口:
this.repository.save(this.sw_vehicles, Shopware.Context.api).then(() => { this.isLoading = false; this.processSuccess = true; // 清空sw_vehicles实体的缓存 Shopware.Context.api.repositoryFactory.create('sw_vehicles').clearCache(); this.$router.push({ name: 'sw.vehicles.list' }); }).catch((exception) => { this.isLoading = false; this.createNotificationError({ title: this.$t('sw-vehicles.import.errorTitle'), message: exception }); });
方案三:通过事件总线通知列表页刷新
利用Shopware内置事件总线,保存成功后触发刷新事件,列表页监听并重新加载:
保存组件触发事件
this.repository.save(this.sw_vehicles, Shopware.Context.api).then(() => { this.isLoading = false; this.processSuccess = true; // 触发自定义刷新事件 Shopware.EventBus.$emit('sw-vehicles-list-refresh'); this.$router.push({ name: 'sw.vehicles.list' }); }).catch((exception) => { this.isLoading = false; this.createNotificationError({ title: this.$t('sw-vehicles.import.errorTitle'), message: exception }); });
列表页组件监听事件
mounted() { // 监听刷新事件 this.refreshListener = Shopware.EventBus.$on('sw-vehicles-list-refresh', () => { this.loadData(); }); }, beforeDestroy() { // 组件销毁前移除监听,避免内存泄漏 Shopware.EventBus.$off('sw-vehicles-list-refresh', this.refreshListener); }
内容的提问来源于stack exchange,提问作者SMS
相关产品推荐
相关产品推荐

