2013-10-16 42 views
3

申報路線,我想用絕對鍵入sammyjs文件與打字稿聯合聲明我的網頁在薩米JS在打字稿

的Javascript的聲明是這樣上的路線 - >

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

到目前爲止,我有這個。

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

顯然params爲不在的情況下更詳細地「這個」,所以我的問題是..這是定義薩米路線的正確方法,如果是,那麼我該如何訪問嬰兒車。

回答

4

我懷疑你的問題是你正在使用胖箭頭語法(保留你的詞法範圍)覆蓋Sammy的範圍。

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

通過使用「function」而不是「()=>」,您可以避免範圍保留並允許Sammy像往常一樣工作。

+0

@Kieran有你有機會去嘗試更新的例子嗎? – Fenton

+0

https://github.com/borisyankov/DefinitelyTyped/blob/master/sammyjs/sammyjs-tests.ts – Kieran

+0

謝謝。你已經接近使用函數的解決方案而不是作用域函數了()=> {} ...但是文檔顯示,有多種方法可以爲一個cat蒙上一層皮。 – Kieran

4

可以使用拉姆達與參數

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

+0

這是在打字稿中使用Sammy的正確解決方案。謝謝。 – Roman