如何在sammy.js中的每个路径上执行特定功能

时间:2014-03-08 11:35:05

标签: routing sammy.js

我的应用程序中有几条路线:

Sammy(function() {
    this.get('#!foo', function(){
        ...
    });

    this.get('#!bar', function(){
        ...
    });

    ... and so on...

    this.get('#!special', function(){
        ...
    })
}).run();

我有一个函数initialize();,如果我遇到#!special以外的任何路线,它与sammy无关。当然我可以复制我的每个路线,除了special(这将起作用,但会有点愚蠢)。有没有办法实现这个目标?

P.S。或者如果你不知道如何做到这一点,有没有办法在每条路线上运行该功能?

1 个答案:

答案 0 :(得分:2)

也许萨米的.before方法适合你?

以下是一些可以执行您想要的示例(未经测试的)代码:

this.before({except: {path: '#!special'}}, function() {
    initialize();
});

.before()方法基本上允许您在每个路由之前进行一些回调,但也允许您过滤掉某些路由(或执行相反的操作并将某些路由列入白名单)。