mmRouter:登录跳转

Home
<!DOCTYPE html>
<html>
    <head>
        <title>mmRouter组件</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <link rel="stylesheet" href="ui/ex.css">
        <script src="../avalon.js"></script>
        
        <script>
            var arr = "doublelist flipswitch loading menu progressbar scrollbar scrollspy tab tooltip tree dragsort treeMunu mmPromise".split(" ")
            require(["mmRouter/mmState", "dialog/avalon.dialog", "dropdownlist/avalon.dropdownlist"], function() {
                var home = avalon.define("home", function(vm) {
                    vm.user = {
                        username: "",
                        pwd: ""
                    }
                    vm.dropdownlist1 = {
                        textbox: {
                            placeholder: "请输入组件名字"
                        },
                        data: arr
                    }
                    vm.admin = {
                        username: "skipper",
                        pwd: "123"
                    }
                    vm.isLogin = function() {
                        if(!vm.user.username || !vm.user.pwd) {
                            avalon.router.go("login", {query: {
                                jumpUrl: encodeURIComponent(location.hash)
                            }}, {replace: true})
                            return false
                        }
                    }
                    vm.uis = arr
                    vm.page = ""
                }),
                currentState,
                // 登录
                login = avalon.define("login", function(vm) {
                    vm.login = function(e) {
                        e.preventDefault()
                        if(home.user.username && home.user.pwd) {
                            avalon.vmodels.dialogName.toggle = false
                            if(currentState && currentState.query) {
                                var jumpUrl = currentState.query.jumpUrl
                                if(jumpUrl) {
                                    jumpUrl = decodeURIComponent(jumpUrl)
                                    jumpUrl = jumpUrl.replace(avalon.history.prefix, "")
                                    return avalon.router.navigate(jumpUrl)
                                }
                            }
                            avalon.router.go("user.developer", {
                                username: home.user.username,
                                pwd: home.user.pwd,
                                isAdmin: home.user.username == home.admin.username && home.user.pwd == home.add.pwd
                            })
                            return
                        }
                        alert("请输入用户名和密码")
                    }
                })
                avalon.state("home", {
                    url: "/",
                    controller: "home",
                    views: {
                        "": {
                            templateUrl: "ui/home.html"
                        }
                    },
                    onEnter: function() {
                                                
                    }
                })
                avalon.state("login", {
                    controller: "home",
                    url: "/login",
                    views: {
                        "login" : {
                            templateUrl: "ui/login.html"
                        }
                    },
                    onBeforeEnter: function() {
                        if(avalon.vmodels.dialogName) {
                            avalon.vmodels.dialogName.toggle = true
                            return false
                        }
                    },
                    onEnter: function() {
                    },
                    onAfterLoad: function() {
                        if(avalon.vmodels.dialogName) avalon.vmodels.dialogName.toggle = true
                    }
                })

                avalon.state("user", {
                    controller: "home",
                    url: "/user",
                    views: {
                        "user": {
                            templateUrl: "ui/user.html"
                        }
                    },
                    onBeforeEnter: home.isLogin
                })

                avalon.state("user.developer", {
                    controller: "home",
                    url: "/developer/:username",
                    views: {
                        "uilist": {
                            templateUrl: "ui/list.html"
                        }
                    },
                    onEnter: function() {
                        home.user.username = this.params.username
                        home.user.pwd = this.params.pwd
                    }
                })

                avalon.state.config({
                    onLoad: function() {
                        currentState = this.currentState
                        home.page = currentState.stateName
                    },
                    onError: function(e, state) {
                        avalon.log(e.error)
                    }
                })

                //启动路由
                avalon.history.start({
                    basepath: "/mmRouter",
                    fireAnchor: false
                })

                avalon.scan()
            })
        </script>
    </head>
    <body ms-controller="home">
        <h1>mmRouter:登录跳转</h1>
        <div>
            <a href="#!//">Home</a>
            <div 
                 ms-visible="page=='home'" ms-view=""></div>
            <div 
                 ms-visible="page=='login'" ms-view="login"></div>
            <div 
                 ms-visible="page=='user.developer'" ms-view="user"></div>
            <div class="clr"></div>
        </div>
        
    </body>
</html>