Estoy tratando de actualizar mi interfaz de usuario en función de una devolución de llamada de signalR en angluarJs con mecanografiado. Recibo la devolución de llamada cada vez, pero obtengo resultados aleatorios para actualizar la interfaz de usuario. A veces funciona ya veces no sin cambiar el código.
Aquí está el constructor de mi controlador que escucha los eventos de 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(() => { });Como dije, recibo la devolución de llamada cada vez que espero. Es solo esto. UserList está vinculado a la interfaz de usuario y no funciona siempre. Es inconsistente, a veces funciona y otras no.
Cuando funciona, el alcance se ve así:
Y cuando no se actualiza, el alcance se ve así:
Noté que cuando no funciona obtengo muchas más propiedades en el alcance, y el padre es nulo, los observadores son nulos. Pero el vm ClassRoomRaciliatorHomeController es el mismo.
Esto es difícil de entender porque ocurre una inconsistencia, funciona, funciona, luego no funciona, luego funciona... ect...
Cualquier idea sería útil.
Intenté hacer rootscope.apply() para ver lo mismo. Intenté reemplazar la función con () =>() sintaxis con mecanografiado y veo lo mismo ...
Creo que pude solucionar esto usando un servicio de transmisión para publicar el mensaje una vez que lo recibe el controlador del señalizador. Luego, el oyente de eventos de transmisión hace this.UserList = … Creo que esto permite que el osciloscopio use el osciloscopio del controlador en lugar de tratar con el osciloscopio en el controlador de eventos del señalador.