所以我有这个问题,我现在已经摸不着头几天了,似乎我要么发现真的过时的代码,有些东西被打破了,或者我显然不知道我在做什么。
我无法为我的爱让我的控制器使用我工厂的模型来更新视图。唯一发生的事情是显示默认模型并且永远不会更新。
这是我工厂相关部分的摘要:
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;
我的控制器(套接字是工厂,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"
答案 0 :(得分:0)
the link posted I posted in the comments的其他信息:虽然你可以只做$ scope。$ apply()而不是$ rootScope。$ apply()它会在内部调用$ rootScope。$ digest()所以我们不要&#39;在这里获得任何性能优化。你可以做的是调用$ scope。$ digest()。这将在当前范围上执行,并仅更新子元素。但是父级范围不会更新,直到再次运行整个摘要循环。如果你需要,我认为你必须做$ scope.apply()。
[关于stackoverflow:现在更好地提出评论或接受答案?因为我的答案或多或少只是一个指向正确答案的链接。我会把它留给你;)]