AngularJS 工厂对象不会通过控制器自动更新视图

AngularJS factory object is not automatically updating view through controller

所以我有这个问题,我已经挠头几天了,看来我要么找到了真正过时的代码,要么有什么东西坏了,要么我根本不知道我在做什么。

我不能为了我的爱让我的控制器使用我工厂的模型来更新视图。唯一发生的事情是显示默认模型并且永远不会更新。

这是我厂相关部分的总结:

var entryData = {
    "postMessage": []
    , "setPeerCount": {}
    , "nudge": {}
};
ws.onmessage = function(message) {
    listener(JSON.parse(message.data));
};
function listener(rpc2) {
    console.log(rpc2);
    if(rpc2.hasOwnProperty("method") && entryData.hasOwnProperty(rpc2.method)) {
        if(type.set[rpc2.method] !== undefined) {
            entryData[rpc2.method] = rpc2.params;
        }
        else if(type.add[rpc2.method] !== undefined) {
            entryData[rpc2.method][entryData[rpc2.method].length] = rpc2.params;
        };
        console.log(entryData)
    }
};
return entryData;

我的控制器(socket 是工厂,sockItToMe 是测试应用名称):

sockItToMe.controller('peerCount', ['$scope', 'socket', function($scope, socket){
     $scope.peerCount = socket;
}]);

我的看法:

<div ng-controller="peerCount">
    {{ peerCount }}
</div>

我在 HTML 中得到的输出:

{"postMessage":[],"setPeerCount":{},"nudge":{}}

我通过直接读取对象从控制台获得的输出:

Object {postMessage: Array[0], setPeerCount: Object, nudge: Object}
nudge: Object__proto__: Object
postMessage: Array[1]0: Object
    message: "Welcome"__proto__: Object
    length: 1__proto__: Array[0]
setPeerCount: ObjectpeerCount: "3"

the link posted I posted in the comments 的附加信息:虽然您可以只执行 $scope.$apply() 而不是 $rootScope.$apply() 它会在内部调用 $rootScope.$digest() 所以我们不在这里没有任何性能优化。你可以做的是调用 $scope.$digest()。这将在当前范围内执行并仅更新子元素。但是在整个摘要循环再次 运行 之前,父作用域不会得到更新。如果你需要,我认为你必须做 $scope.apply().

[关于 Whosebug:现在是赞成评论更好还是接受答案更好?因为我的答案或多或少只是一个指向正确答案的link。我会把它留给你 ;)]