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

có một vấn đề trong các mã:nguyên cảo bất ngờ này là undefined loại

this.hub.invoke('hello'); 

this.hub là đáng ngạc nhiên không xác định.

Và tôi hy vọng nó phải là một đối tượng. Bất kỳ suy nghĩ nào về nó?

Trả lời

9

this không trỏ đến ví dụ. Fix sử dụng một lambda:

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

thêm: https://www.youtube.com/watch?v=tvocUcbCupA

cũng

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

có lẽ bạn có nghĩa là để call ví dụ () => this.onConnStart()

+0

Thật không may, trong trường hợp của bạn onConnStart gọi lại không hoạt động. Vì vậy, có một vấn đề. – alerya

+0

Hoạt động: this.cnn.start (this.onConnStart); – alerya

+0

cảm ơn vì điều này. đã gãi đầu tôi trước đây. có ý nghĩa, nhưng nó cũng không nhất quán. cổ vũ – b26