mmRouter icon indicating copy to clipboard operation
mmRouter copied to clipboard

avalon.router.navigate(hash, mode) 方法可以不执行回调吗?

Open jtsang4 opened this issue 7 years ago • 2 comments

你好,我想问一下 avalon.router.navigate(hash, mode) 这个方法,可以只改变 hash 值,但不执行回调吗?

jtsang4 avatar May 18 '17 03:05 jtsang4

基于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();  // 这里是回调函数
}

johnnynode avatar Sep 26 '17 22:09 johnnynode

回调函数就是router.add方法的第二参数

avalon.router.add("/:tab", function (param) {
    vm.main = map[param]
})

RubyLouvre avatar Sep 27 '17 07:09 RubyLouvre