javascripttypescriptsammy.js

declare routes in sammy js in typescript


I would like to use the definitely typed sammyjs file in conjunction with typescript to declare a route on my page

Javascript for the declaration would look like this -->

    Sammy(function () {
        this.get('#:foobar', function () {
            //doStuff 
            var baz = this.params.foobar;
        });
        this.get('', function () { this.app.runRoute('get', '#All') });
    }).run();

So far I have this.

var app: Sammy.Application = Sammy();
app.get('#:foobar', () => {
    //doStuff 
    var baz = this.params.foobar;
});

Obviously params is not in the context of 'this' so my question in more detail is.. Is this the correct way to define the sammy routes and if yes then how do I access the prams.


Solution

  • I suspect the problem you have is that you are overriding Sammy's scope by using the fat-arrow syntax (which preserves your lexical scope).

    var app: Sammy.Application = Sammy();
    app.get('#:foobar', function () {
        //doStuff 
        var baz = this.params.foobar;
    });
    

    By using "function" instead of "() =>" you avoid scope preservation and allow Sammy to work as usual.