javascript - AngularJS + Signalr not connecting to hub when controller is in a ng-include -



javascript - AngularJS + Signalr not connecting to hub when controller is in a ng-include -

i experiencing unusual problem connecting hub controller when controller "inside" ng-include.

service:

angular.module('app').service('signalrsvc', function($, $rootscope) { var proxy = null; var initialize = function() { var connection = $.hubconnection(); proxy = connection.createhubproxy('myhub'); connection.start(); proxy.on('srvmessage', function(data) { $rootscope.$emit('newmessage', data); }); } homecoming { initialize: initialize }; });

the controller:

function mycontroller($scope, signalrsvc) { signalrsvc.initialize(); var vm = this; vm.message = ''; $scope.$parent.$on("newmessage", function (e, data) { $scope.$apply(function () { vm.mesage = data; }); }); }

index.html (stripped down):

<div data-ng-controller="mycontroller vm"> server message {{vm.message}} </div> <div data-ng-controller="logincontroller vm"> server message 2: {{vm.message}} </div> <div data-ng-include="'app/layout/shell.html'"></div>

and shell.html:

<div data-ng-controller="mycontroller vm"> server message {{vm.message}} </div>

debugging service initialize triggered 3 times, serverside onconnect triggered twice. posting message server controllers in index.html updated, 1 in shell not. if remove controllers index.html 1 initialize , 0 onconnect serverside.

however if drop using service , set next code within controller 3 connections , update controllers:

var hub = $.hubconnection(); var proxy = hub.createhubproxy('myhub'); proxy.on('newmessage', function(data) { $scope.$apply(function() { vm.message = data; }); }); hub.start().done(function () { });

has else seen before or can explain why controller within ng-incude not working using service?

i think might have 2 different issues:

you should define .on handler on signalr proxy before calling .start(), should help solving missing invocation of onconnected server side (sounds weird, know, try) nginclude introduces isolated scope, hence have 1 more level of scopes there, introduce issue. moreover, in order send events parent kid scopes, doing, should using $broadcast (check here)

both first-impression things see , might want try, did not test though...

javascript asp.net angularjs signalr signalr-hub

Comments

Popular posts from this blog

php - Android app custom user registration and login with cookie using facebook sdk -

django - Access session in user model .save() -

php - .htaccess Multiple Rewrite Rules / Prioritizing -