2017-04-27 74 views
1

我正在嘗試更新我的用戶界面,基於帶打字稿的angluarJs中的signalR回調。我每次都會收到回調,但是我得到隨機結果來更新UI。有時它可以工作,有時它不會改變代碼。用signalR回調更新UI

這裏是我的控制器構造偵聽到signalR事件:

var chat = this.$.connection.chatHub; 

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

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

    }; 

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

就像我說的,我得到每次我想到時候回調。這僅僅是這個.UserList綁定到UI,並且每次都不工作。這是不一致的,它有時會起作用,而不是其他時間。

當它的工作範圍如下:

enter image description here

而當它不更新範圍如下:

enter image description here

當它沒有我注意到我在作用域中分配更多屬性,並且父項爲空,觀察者爲空。但是vm ClassRoomRaciliatorHomeController是一樣的。

這是很難找出原因它發生矛盾,它的作品,作品,然後不工作,那麼工作...等...

任何有識之士將是有益的。

我試着做rootscope.apply()看同樣的事情。嘗試用()=>()語法與typescript代替函數,並看到相同的東西...

+0

你可以提供一個撬棍 –

回答

0

我想我能解決這個問題,通過使用廣播服務發佈消息,一旦它被信號處理程序。然後廣播事件監聽器執行this.UserList = ...我認爲這可以讓範圍使用控制器範圍,而不是處理signalr事件處理程序中的範圍。