我一直试图压制Sammy.js路由器中的正常路由行为,但到目前为止我一直没有成功。
This other SO answer无济于事有两个原因:
在我的情况下,赞成的回答是“不可接受的”,因为其中一个“软”要求是任何路线都可以在不知情的情况下保持沉默。
换句话说,应该正常定义路径,并且Sammy的内部应该检查是否触发路由处理程序的选项。
第二个答案 -
var new_location = '#foo';
app.trigger('redirect', {to: new_location});
app.last_location = ['get', new_location];
app.setLocation(new_location);
- 不起作用。
作为一个简单的例子,父对象定义了这个方法:
"navigate": function( href, options ){
var sammyAppRouter = window.router;
if( !options ){
options = {};
}
if( options.silent ){
sammyAppRouter.trigger( "redirect", { "to": href } );
sammyAppRouter.last_location = [ "get", href ];
}
sammyAppRouter.setLocation( href );
}
(其中window.router
是全球Sammy路由器)
在非常简单,我的目标是仅更改网址并让网址监听器忽略该更改。它应该可以在一个原本可以匹配的路由上,因此navigate( '/my-route' )
会触发一个处理程序,但navigate( '/my-route', { "silent": true } );
会更改该URL并且不会触发处理程序。
是否可以逐个呼叫抑制Sammy处理程序?