- 26
- 0
题目描述
我用vue-cli 监听路由变化,可是为什么不进这个监听函数啊?
题目来源及自己的思路
首先我用watch监听路由变化,想得到他的上一个跳转路由名称,但始终进入不了路由监听函数,得不到from里面的参数,后来我就想着用beforeRouteEnter这个函数,虽然得到了from里面的路径,但是不能操作data里面的数据啊,打印出来的this为undefined,求大神指教
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
watch: {
$route: {
handler (val, oldval) {
console.log(val) // 新路由信息
console.log(oldval) // 老路由信息
},
// 深度观察监听
deep: true
}
},
beforeRouteEnter (to, from, next) {
console.log('to:', to)
console.log('from:', from)
if (from.fullPath === '/trackCoupon') {
this.products = []
console.log('this:', this) // 打印出来的this为undefined
}
next()
},
你期待的结果是什么?实际看到的错误信息又是什么?
- 共 0 条
- 全部回答
-
吹箫望江南 普通会员 1楼
在Vue.js中,你可以使用路由守卫(Route Guard)来监听路由变化并执行相应的逻辑。以下是一个简单的例子:
```javascript // src/router.js import Vue from 'vue' import Router from 'vue-router'
Vue.use(Router)
export default new Router({ routes: [ { path: '/products/:id', name: 'Product', component: () => import('./product.vue'), children: [ { path: '/product/:id/edit', name: 'EditProduct', component: () => import('./editProduct.vue'), }, ], }, ], }) ```
在上面的代码中,
src/router.js文件包含一个Vue Router实例和一个路由配置。路由配置包含一个products/:id路由,该路由将匹配路径为/products/:id的路由。当这个路由被应用到Vue实例上时,store/index.js中的路由钩子(如routeEnter)会被调用。以下是如何在
src/components/product.vue文件中添加路由守卫的示例:```vue // src/components/product.vue
{{ product.name }}
Product details:
-
{{ item }}
```
在
src/components/product.vue中,我们定义了一个product数据结构和一个editProduct方法。当用户点击"Edit"按钮时,editProduct方法将被调用。在editProduct方法中,我们可以根据product对象中的productDetails数组来更新路由守卫的逻辑。在路由守卫中,我们使用
@routeEnter钩子来监听/products/:id的路由变化。当这个路由被应用到Vue实例上时,store/index.js中的routeEnter钩子会被调用。在这个钩子中,我们首先检查当前路由的匹配路径是否与/products/:id匹配,如果是,我们就执行editProduct方法并更新路由守卫的this.product对象。这样,即使editProduct方法没有被调用,editProduct的逻辑也会在路由匹配时被应用到Vue实例上,从而实现了路由守卫的功能。 -
-
凉城薄梦风轻 普通会员 2楼
在Vue.js中,你可以使用路由守卫(Route Guard)来监听路由变化并执行相应的逻辑。以下是一个简单的例子:
```javascript // src/router.js import Vue from 'vue' import Router from 'vue-router'
Vue.use(Router)
export default new Router({ routes: [ { path: '/products/:id', name: 'Product', component: () => import('./product.vue'), children: [ { path: '/product/:id/edit', name: 'EditProduct', component: () => import('./editProduct.vue'), }, ], }, ], }) ```
在上面的代码中,
src/router.js文件包含一个Vue Router实例和一个路由配置。路由配置包含一个products/:id路由,该路由将匹配路径为/products/:id的路由。当这个路由被应用到Vue实例上时,store/index.js中的路由钩子(如routeEnter)会被调用。以下是如何在
src/components/product.vue文件中添加路由守卫的示例:```vue // src/components/product.vue
{{ product.name }}
Product details:
-
{{ item }}
```
在
src/components/product.vue中,我们定义了一个product数据结构和一个editProduct方法。当用户点击"Edit"按钮时,editProduct方法将被调用。在editProduct方法中,我们可以根据product对象中的productDetails数组来更新路由守卫的逻辑。在路由守卫中,我们使用
@routeEnter钩子来监听/products/:id的路由变化。当这个路由被应用到Vue实例上时,store/index.js中的routeEnter钩子会被调用。在这个钩子中,我们首先检查当前路由的匹配路径是否与/products/:id匹配,如果是,我们就执行editProduct方法并更新路由守卫的this.product对象。这样,即使editProduct方法没有被调用,editProduct的逻辑也会在路由匹配时被应用到Vue实例上,从而实现了路由守卫的功能。 -
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部


