使用signalR回调更新UI

时间:2017-04-27 01:12:43

标签: jquery .net angular typescript signalr

我正在尝试使用typescript在angluarJs中基于signalR回调更新我的UI。我每次都收到回调,但我得到随机结果来更新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

我注意到当它不起作用时我会在范围内分配更多属性,并且父级为null,观察者为空。但是vm ClassRoomRaciliatorHomeController是一样的。

这很难弄清楚是因为它发生了不一致,它有效,有效,然后不起作用,然后有效......等等......

任何见解都会有所帮助。

我尝试过rootcope.apply()看到同样的事情。尝试使用typescript的()=>()语法替换函数,并看到同样的事情......

1 个答案:

答案 0 :(得分:0)

我认为通过使用广播服务在信号器处理程序收到消息后发布消息,我能够解决这个问题。然后广播事件监听器执行this.UserList = ...我认为这允许范围使用控制器范围而不是处理信号器事件处理程序中的范围。