Angularjs和Socket.io,在我的视图中无法编辑值

时间:2015-08-04 14:48:55

标签: javascript angularjs node.js socket.io

要学习使用AngularJS和NodeJS,我想创建一个聊天室...所有Angular控制器都能正常工作,我可以将信息发送到我的NodeJS服务器(使用socket.io)。但问题是:当我的clientApp收到socket.on并且我在视图中更改var的值时它不起作用......你知道为什么吗?

查看:

<!-- Users connected -->
            <div class="row" ng-controller="connectedUsersCtrl">
              <div class="col-md-8"></div>
              <div class="col-md-4" ng-model="connectedUsers">{{connectedUsers}}</div>
            </div>

app.js:

var chatApp= angular.module('chatApp', []);
var socket = io.connect('http://127.0.0.1:2901');


chatApp.controller('connectedUsersCtrl', ['$scope', function ($scope) {

    socket.on("connectedUsers", function(number) {
        console.log("There are " + number + " users.");

        // All work but not this line... ! 
        $scope.connectedUsers = number;

    });

}]);

谢谢你的帮助。 最好的问候,

编辑: 要强制编辑,您必须输入:$ scope。$ apply()

1 个答案:

答案 0 :(得分:1)

你只需要打电话

$timeout(function () { $scope.$apply() });

或尝试制作Javascript对象,例如

$scope.counter = {
    users: 0
};

当您收到活动时:$scope.counter.users = number 然后在您的视图中:致电counter.users

我希望它能解决你的问题!