Angularjs 和 Socket.io,无法编辑我认为的值
Angularjs and Socket.io, impossible to edit a value in my view
为了学习使用 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()
你只需要打电话给
$timeout(function () { $scope.$apply() });
或尝试创建一个 Javascript 对象,例如
$scope.counter = {
users: 0
};
当您收到事件时:$scope.counter.users = number
然后在您看来:调用 counter.users
希望能解决您的问题!
为了学习使用 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()
你只需要打电话给
$timeout(function () { $scope.$apply() });
或尝试创建一个 Javascript 对象,例如
$scope.counter = {
users: 0
};
当您收到事件时:$scope.counter.users = number
然后在您看来:调用 counter.users
希望能解决您的问题!