【问题标题】:Angularjs and Socket.io, impossible to edit a value in my viewAngularjs 和 Socket.io,在我看来无法编辑值
【发布时间】:2015-10-27 01:10:34
【问题描述】:

为了学习使用 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()

【问题讨论】:

    标签: javascript angularjs node.js socket.io


    【解决方案1】:

    你只需要调用一个

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

    或尝试制作一个 Javascript 对象,例如

    $scope.counter = {
        users: 0
    };
    

    当您收到事件时:$scope.counter.users = number 然后在您看来:致电counter.users

    希望能解决你的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      相关资源
      最近更新 更多