2017-04-27 7 views
1

私は、typeCriptを使用しているangluarJsのsignalRコールバックに基づいてUIを更新しようとしています。私は毎回コールバックを取得しますが、私はUIを更新するためにランダムな結果を得ています。ときどき動作し、時にはコードを変更することなく動作します。signalRコールバックのUIを更新します

var chat = this.$.connection.chatHub; 

    chat.client.userListUpdated = (name: any, message: any): void => { 

     this.$scope.$apply(() => { 
      this.UserList = message; 
     }); 

    }; 

    this.$.connection.hub.start().done(() => {   
    }); 

が好きな私は、コールバック私が期待するすべての時間を取得言った:

はここsignalRイベントをリッスン私のコントローラのコンストラクタです。これはちょうどthis.UserListはUIにバインドされ、毎回動作しません。それは矛盾している、時々動作し、他の時間ではありません。

enter image description here

をそして、それは更新しないときのスコープは、次のようになります:それはスコープを作品

はこのようになりそうでないときに私は気づいた

enter image description here

私はスコープ内で多くのプロパティを割り当て、親はnull、ウォッチャーはnullです。しかし、vm ClassRoomRaciliatorHomeControllerは同じです。

これは、それが矛盾を発生した原因を把握するのは難しいです、それは動作しますが、動作しますが、その後は動作しません、そして...電気ショック療法...

任意の洞察力が参考になる作品。

私はrootscope.apply()と同じことをやってみました。タイプスクリプトで()=>()構文をtypescriptで置き換えてみましたが、同じことを見てみましょう...

+0

あなたは、 –

答えて

0

これを回避するには、ブロードキャストサービスを使用して、シグナルハンドラ。次に、ブロードキャストイベントリスナーはthis.UserList =を行います。これにより、scopeはsignalrイベントハンドラのスコープを処理するのではなく、コントローラのスコープを使用できるようになります。

関連する問題