mmRouter
mmRouter copied to clipboard
avalon.router.navigate(hash, mode) 方法可以不执行回调吗?
你好,我想问一下 avalon.router.navigate(hash, mode) 这个方法,可以只改变 hash 值,但不执行回调吗?
基于webpack的mmRouter 源码中关于navigate部分:
navigate: function (hash, mode) {
var parsed = parseQuery(hash)
var newHash = this.route(parsed.path, parsed.query)
if(isLegalPath(newHash)){
hash = newHash
}
//保存到本地储存或cookie
avalon.router.setLastPath(hash)
// 模式0, 不改变URL, 不产生历史实体, 执行回调
// 模式1, 改变URL, 不产生历史实体, 执行回调
// 模式2, 改变URL, 产生历史实体, 执行回调
if (mode === 1) {
avalon.history.setHash(hash, true)
} else if (mode === 2) {
avalon.history.setHash(hash)
}
return hash
}
注释中的"执行回调",在哪里, 这个回调函数是谁? 是基于mode值判断的if体吗? 如果不是,那么回调是如何实现的。
我理解的回调是这样的 :
var study = function(callback) {
callback && callback(); // 这里是回调函数
}
回调函数就是router.add方法的第二参数
avalon.router.add("/:tab", function (param) {
vm.main = map[param]
})