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 回答