新文档 旧版文档 迁移教程
路由器插件,实现类似angular ui-router的功能
require(["mmRouter"], function() {})
var model = avalon.define('test', function(vm) { vm.currPath = "" vm.params = {} vm.query = {} vm.args = "[]" })
function callback() { model.currPath = this.path var params = this.params if ("time" in params) { params.time = avalon.filters.date(params.time, "yyyy年M月dd日") } model.params = params model.query = this.query model.args = "[" + [].slice.call(arguments, 0) + "]" } avalon.router.get("/aaa/", callback) avalon.router.get("/bbb", callback) avalon.router.get("/ccc/:ccc", callback) avalon.router.get("/ddd/{time:date}/", callback) avalon.router.get("/eee/{count:\\d{4}}/", callback) avalon.router.get("/fff", callback)
avalon.history.start({ basepath: "/avalon" })
avalon.scan()
<ul> <li> <a href="#!/aaa">aaa</a> </li> <li> <a href="#!/bbb?uu=3445345&were=4324">bbb</a> </li> <li> <a href="#!/ccc/etretr">ccc</a> </li> <li> <a href="#!/ddd/2014-09-19">ddd</a> </li> <li> <a href="#!/eee/2222">eee</a> </li> <li> <a href="#!/fff?a=1&nn=4&dfg=676">fff</a> </li> </ul>
avalon.router.get("/ddd/:dddID/", callback) avalon.router.get("/ddd/{dddID}/", callback) avalon.router.get("/ddd/{dddID:[0-9]{4}}/", callback) avalon.router.get("/ddd/{dddID:int}/", callback) 我们甚至可以在这里添加新的类型, avalon.router.$type.d4 = { pattern: '[0-9]{4}', decode: Number } avalon.router.get("/ddd/{dddID:d4}/", callback)
{ "": {template: "xxx"} "aaa": {template: "xxx"} "bbb@": {template: "xxx"} }
onEnter: function() { var query = this.getQuery() or this.query }
onEnter: function() { var params = this.getParams() or this.params }