2015-02-08 12 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(); 

gibt es ein Problem in dem Code:unerwartete Typoskript ist dies nicht definiert Typ

this.hub.invoke('hello'); 

this.hub ist überraschenderweise nicht definiert.

Und ich hoffe, es sollte ein Objekt sein. Irgendwelche Gedanken darüber?

Antwort

9

this zeigt nicht auf die Instanz. Fix einen Lambda verwenden:

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

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

auch

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

vielleicht gemeint Sie call heißt () => this.onConnStart()

+0

Leider ist in Ihrem Fall onConnStart Rückruf nicht. Es gibt also ein Problem. – alerya

+0

Das funktioniert: this.cnn.start (this.onConnStart); – alerya

+0

danke dafür. Ich kratzte mich vorher am Kopf. macht Sinn, ist aber auch nicht konsistent. Prost – b26

Verwandte Themen