zoukankan      html  css  js  c++  java
  • VueRouter-组件守卫

      组件导航守卫,就是组件中写守卫。也就是进入到这个组件之前会调用的方法。组件导航守卫大体分为:`beforeRouteEnter`、`beforeRouteUpdate`、`beforeRouteLeave`三个。
            beforeRouteEnter:在进入组件之前调用的。在这里不能使用`this`,因为,该组件还没有实例化。
            beforeRouteUpdate:防止组件重用。
            beforeRouteLeave:即将离开这个组件的时候调用的。

      整体代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
        <title>VueRouter-组件守卫</title>
    </head>
    
    <body>
        <div id="app">
            <router-link to="/account">我的账户</router-link>
            <router-link to="/order">订单</router-link>
            <router-view></router-view>
        </div>
        <script>
            var account = Vue.extend({
                data: function () {
                    return {
                        username: "Xsan"
                    }
                },
                template: "<h1>账户</h1>",
                beforeRouteEnter: function (to, from, next) {
                    console.log("to:", to)
                    console.log("from:", from)
                    console.log(this.username)
                    next(vm => {
                        // 此时可以通过vm访问属性
                        console.log("username:", vm.username)
                    })
                },
                beforeRouteUpdate: function (to, from, next) {
                    console.log("to:", to)
                    console.log("from:", from)
                    console.log(this.username)
                },
                beforeRouteLeave: function (to, from, next) {
                    const anwser = window.confirm("您确认离开这个页面吗?")
                    if (anwser) {
                        next()
                    }
                }
            })
            var order = Vue.extend({
                template: "<h1>订单</h1>"
            })
            let router = new VueRouter({
                routes: [{
                    path: "/account",
                    component: account,
                    name: "account"
                }, {
                    path: "/order",
                    component: order,
                    name: "order"
                }]
            })
    
            new Vue({
                el: "#app",
                router,
            })
        </script>
    </body>
    
    </html>
  • 相关阅读:
    微信小程序用vant,dialog弹出框
    小程序太阳码 ,不发布也可以测试
    php ,通过password与salt共同来验证登录
    vscode 使用less开发微信小程序
    php命名规范
    61键 如何打波浪线
    php 循环使用
    记一次,物业费时间交集问题
    Mac拖拽文件
    python 支持中文
  • 原文地址:https://www.cnblogs.com/xshan/p/12364537.html
Copyright © 2011-2022 走看看