2015-02-08 84 views
7
/// <reference path="../typings/signalr/signalr.d.ts" /> 
/// <reference path="../typings/jquery/jquery.d.ts" /> 

interface IMyBlackjack { 

} 

module My { 
    export class MyBlackjack implements IMyBlackjack { 

     private hub: HubProxy; 
     private cnn: HubConnection; 

     constructor() { 
      $("#formBlackJack").hide(); 

      this.cnn = $.hubConnection(); 
      this.hub = this.cnn.createHubProxy("blackjackHub"); 
      this.cnn.start(() => this.onConnStart); 
     } 

     private onConnStart(): void { 
      $("#formBlackJack").show(); 
      this.hub.invoke('hello'); 
     } 
    } 
} 

var myBlackjack: IMyBlackjack = new My.MyBlackjack(); 

存在的代碼中的問題:意想不到打字稿這是未定義的類型

this.hub.invoke('hello'); 

this.hub是令人驚訝的未定義。

我希望它應該是一個對象。 有關它的任何想法?

回答

9

this沒有指向實例。費克斯使用lambda:

private onConnStart =() => { 
     $("#formBlackJack").show(); 
     this.hub.invoke('hello'); 
    } 

更多:https://www.youtube.com/watch?v=tvocUcbCupA

this.cnn.start(() => this.onConnStart); 

也許你的意思是call() => this.onConnStart()

+0

不幸的是,你的情況onConnStart回調不起作用。所以有一個問題。 – alerya 2015-02-09 09:44:08

+0

工作原理:this.cnn.start(this.onConnStart); – alerya 2015-02-09 11:25:16

+0

謝謝你。之前我正在撓頭。是有道理的,但它也不一致。乾杯 – b26 2017-05-03 17:53:23