与Faye发生奇怪的Angular.js行为

时间:2016-01-23 23:17:02

标签: javascript ruby-on-rails ruby angularjs faye

我有以下代码。代码在控制器内部。

var client = new Faye.Client('http://localhost:9292/faye');
client.subscribe('/main', function(message) {
    console.log(message);
    $scope.messages.push(message);
    console.log($scope.messages);
});

这里我使用Faye来收听频道,然后将对象添加到$scope。但是当我console.log范围时,我看到message对象已添加到范围,但DOM未刷新,并且双向绑定不起作用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Angular需要在Angular世界之外发生事件时触发摘要周期。使用$ apply触发摘要:

var client = new Faye.Client('http://localhost:9292/faye');
client.subscribe('/main', function(message) {
    $scope.$apply(function() {
        console.log(message);
        $scope.messages.push(message);
        console.log($scope.messages);
    }
});