角度双向绑定不起作用

时间:2017-01-25 13:09:50

标签: angularjs

我是angularjs的新手,我想与我的服务器建立连接并动态地向用户显示结果。到目前为止,我已经尝试过:

angular.module('myApp.controllers', []).controller('socketsController', function($scope) {

  $scope.socket = {
    client: null,
    stomp: null
  };

  $scope.reconnect = function() {
    setTimeout($scope.initSockets, 10000);
  };

  $scope.notify = function(message) {
    $scope.result = message.body;
  };

  $scope.initSockets = function() {
    $scope.socket.client = new SockJS('/resources');
    $scope.socket.stomp = Stomp.over($scope.socket.client);
    $scope.socket.stomp.connect({}, function() {
      $scope.socket.stomp.subscribe('/user/topic/messages', $scope.notify);
    });
    $scope.socket.client.onclose = $scope.reconnect;
  };
  $scope.initSockets();
});

但是当我使用{{result}}时,没有任何内容出现。

  

UPDATE   服务器响应完全正确console.log(message.body)

2 个答案:

答案 0 :(得分:1)

我猜,回调并没有正确考虑范围。尝试调用$ scope。$ apply();将message.body附加到结果后:

$scope.notify = function(message) {
    $scope.result = message.body;
    $scope.$apply();
  };

$ scope。$ apply()触发一个角度摘要周期,它将更新所有绑定..

答案 1 :(得分:1)

在超时函数中调用它,但首先注入$ timeout,它将调用摘要周期并更新值。

$timeout(function(){
$scope.result = message.body;});