2

Angular JS を Web ソケットで動作させようとしています。Github の Angular Web ソケット シードから基本的なセットアップを取得した後も、双方向のデータ バインディングに関する小さな問題に直面しています。これを含む初期アプリ値を設定するために、構成ファイルのようなファイルを使用しています。

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

次に、最初にボタンの状態を処理し、Web ソケットを介して初期状態を書き換えようとするコントローラーがあります。

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'];

ビューは Jade で簡単に設定できます。

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

誰か光を当てることができますか?

4

1 に答える 1

2

あなたはAngularのRunLoopにいません。ソケットから受信する場合は$scope.$apply();変更してから追加してみてください。buttonState

于 2013-06-08T13:05:14.773 に答える