2015-02-08 82 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