2014-04-17 3 views
1

나는 이곳에서 새로운 데, 영어가 아니기 때문에 실수를해도 나를 용서해주십시오.AngularJs ng-include and socket.io

내 문제는 다음입니다 : LIB JS에

<html ng-app="my_app"> 
<head> ... </head> 
<body> 
... 
<div id='main_conteneur' ng-controller="CtrlTemplate">  
     <div ng-include="template.url"></div> 
    </div> 

</body> 
</html> 

: 나는 클라이언트의 측면에

그래서 나는이 (서버 측에 nodejs와) AngularJS와와 socket.io를 사용하려고

,456 :

var my_app = angular.module('Quizz', []); 
my_app.controller('CtrlTemplate', ['$scope', function ($scope) { 
    $scope.template = { name: 'template1.html' , url: 'template/template1.html' }; 
    socket.on('charger_template', function (data) { 
     $scope.template = {name : 'template2.html' , url : 'template/template2.html'}; 
    }); 

}]); 

및 서버 측 할 소켓에

template2.html을 제외한 모든 것이 잘 작동합니다 (socket.io는 통신 중이며, angularjs는 첫 번째 템플릿을로드합니다). 나는 내가

socket.on('charger_template', function (data) {});

을 체결 그러나 템플릿은 변경되지 않습니다, 서버에서 정보를 수신 할.

난을 console.log ($ 범위)를 할 경우 나 범위를 볼 수 있고 내가 '객체 템플릿에 포함 된 "template2.html"

가 나는 또한 템플릿의 liste 등을 가지고 노력 것을 볼 수 있습니다 다음과 배열을 템플릿을 변경할 수 있지만, 어느 것도 작동하지 않습니다 (내가 최초의 솔루션 유지 prefere) 내가 잘못 여기서 뭐하는 거지

$scope.templates = [ 
{ name: 'template1.html' , url: 'template/template1.html' }, 
{ name: 'template1.html' , url: 'template/template1.html' } 
]; 

$scope.template = $scope.templates[0]; 

를?

+2

만 $의 범위를'호출하면 궁금 할 것입니다 $는에'$의 scope.template'을 설정 한 후()'적용하여 클라이언트 측의'socket.on' 핸들러가 강제적으로 갱신 할 수 있습니다. –

+0

템플릿 중 하나를 게시하십시오! 나는 그들이 잘못되었다고 생각한다. – andrbmgi

+0

Haaaaaaa 감사합니다! $ scope. $ apply(); 작품 !! 해결책을 찾는데 5 일을 보냈습니다! 고마워. – shiminou

답변

1

사실 내 템플릿이 올바르게 설정되어 있으며 경로가 너무 있습니다. 난 그냥 사용하는 것을 잊었다 :. 내가 socket.io와 각 시도하지 않은

$scope.$apply();