【问题标题】:Angularjs not work in socket.io responseAngularjs 在 socket.io 响应中不起作用
【发布时间】:2014-03-15 09:13:28
【问题描述】:

当我想在响应 socket.io 中更改某些内容时,它不起作用,但正常工作。

例如,我第一次模糊用户名时下面的代码不起作用,但第二次它起作用了。

input#username(name="username", ng-model="username", ng-blur="usernameCheck()")
input(type="submit", ng-disabled="dSubmit", value="Register")

$scope.dSubmit = true;
$scope.usernameCheck = function() {
  socket.post('/user/usernameCheck', {username: $scope.username}, function(res) {
    if(res.success) {
      $scope.dSubmit = false;
    } else {
      $scope.dSubmit = true;
    }
  });
};

【问题讨论】:

    标签: angularjs socket.io sails.js


    【解决方案1】:

    您需要在socket.post 回调结束时添加$scope.$apply()

      socket.post('/user/usernameCheck', {username: $scope.username}, function(res) {
        if(res.success) {
          $scope.dSubmit = false;
        } else {
          $scope.dSubmit = true;
        }
        // Apply the scope changes and tell Angular to run the digest loop
        $scope.$apply();
      });
    

    因为作用域在异步方法中发生变化,你需要调用$scope.$apply() 让 Angular 知道发生了一些变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多