2013-06-07 9 views
2

웹 소켓에서 앵귤러 JS 작업을하고 Github의 앵귤러 웹 소켓 시드에서 기본 설정을 얻은 후에도 양방향 데이터 바인딩에 약간의 문제가 있습니다.앵귤러 JS 및 웹 소켓

socket.emit('button:state', { 
    state: 'default' 
    }); 

그럼 난 후 처음 버튼의 상태와 거래하고, 컨트롤러가 초기 상태를 다시 시도했다 :이 들어있는 초기 응용 프로그램 값을 설정, 설정 파일과 같은 파일을 사용하고 있습니다 웹 소켓을 통해 :

뷰는 단순히 옥에서 설정
function MyCtrl1($scope, socket) { 

    // UI INITIAL STATE 
    socket.on('button:state', function (data) { 
     $scope.buttonState = data.state; 
    }); 

    // UI CLICKED STATE 
    $scope.buttonClicked = function(data) { 
     //$scope.buttonState = 'clicked'; 
     socket.emit('button:state', { 
      state: 'clicked' 
     }); 
     console.log('button clicked'); 
    }; 
} 
MyCtrl1.$inject = ['$scope', 'socket']; 

:

div(class='button', ng-class='buttonState', ng-click='buttonClicked()') 

사람이 어떤 빛을하시기 바랍니다 있나?

+0

여기에는 아무 것도 없습니다. 나는 종종'$ scope.buttonState = '''와 같은 다른 것보다 먼저 디폴트 값을 설정하거나 상태를 위해 사용하는 변수를 초기화하고 추적하는데 유용하다는 것을 발견한다. 비취의 출력물을 게시 할 수 있습니까? –

답변

2

Angular 's RunLoop이 아닙니다. 소켓에서받을 때 buttonState을 변경 한 후 $scope.$apply();을 추가하십시오.