2013-01-21 49 views
1

如何在TypeScript中使用自定義事件?如何在TypeScript中使用自定義事件?

在jQuery中我這樣做:

$("#btnShowExplorer").click(function() { 
      $.event.trigger("showexplorerpf"); 
     }); 

和別的地方我聽'這個事件

 // bind to the special custom event 
     $('#idExplorerWindow').bind("showexplorerpf", function() { 

      // do stuff... 

     }); 

我現在正在我的代碼,以打字稿 - 我有一個裁判了jQuery類型def file但$ .event.trigger無法識別..

感謝

回答

1

您可能需要擴展jQuery接口。我的例子將它全部放在一個文件中,但不一定要放在同一個文件中 - 只是你參考的一個文件。

interface JQueryEvent { 
    trigger(name: string): void; 
} 

interface JQueryStatic { 
    event: JQueryEvent; 
} 

$("#btnShowExplorer").click(function() { 
    $.event.trigger("showexplorerpf"); 
}); 
+0

這就像一個治療 - 但如何工作的呢?我是新來的TypeScript ... – Marcel

+0

它增加了類型信息,所以TypeScript理解jQuery有什麼可能。它們被稱爲類型定義。因此,TypeScript提供給您的靜態檢查可以擴展到使用此方法覆蓋純JavaScript。 – Fenton

+0

更好的是,如果您發現您使用的JQuery類型定義不支持JQuery所做的一些事情,請修復它,然後將提交請求提交給DefinitelyTyped:https://github.com/borisyankov/DefinitelyTyped。 (你*是*使用DefinitelyTyped定義,對不對?) –

0

其實觸發()有多個簽名。

檢查​​

對於我這個工作,因爲我需要用事件發送一些數據好:

interface JQueryEvent { 
    trigger(name: string, data:any[]): void; 
} 

interface JQueryStatic { 
    event: JQueryEvent; 
}