抑制/沉默Sammy.js路线

时间:2015-04-09 19:54:05

标签: javascript url-routing sammy.js

我一直试图压制Sammy.js路由器中的正常路由行为,但到目前为止我一直没有成功。

This other SO answer无济于事有两个原因:

  1. 在我的情况下,赞成的回答是“不可接受的”,因为其中一个“软”要求是任何路线都可以在不知情的情况下保持沉默。
    换句话说,应该正常定义路径,并且Sammy的内部应该检查是否触发路由处理程序的选项。

  2. 第二个答案 -

    var new_location = '#foo';
    app.trigger('redirect', {to: new_location});
    app.last_location = ['get', new_location];
    app.setLocation(new_location);
    

    - 不起作用。

  3. 作为一个简单的例子,父对象定义了这个方法:

    "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处理程序?

0 个答案:

没有答案