我有一个Service
来监听webSockets(不能使用回调或承诺,数据更新是随机的)。服务获取更新并将其保存到服务对象。我有一个带有控制器的角度应用页面,其中包含$scope
中的服务对象。
但是我在页面上渲染数据时遇到了问题。现在我使用$ timeout()更新视图,但寻找更优雅的方式。
我知道我可以在服务的对象上使用$watch
,但我认为它对浏览器而言过于沉重。
那么在服务数据发生变化后渲染视图/控制器的正确方法是什么?
答案 0 :(得分:0)
您可以使用$rootScope.$broadcast
替代,但它也像$ watch一样沉重,我不知道为什么你害怕使用$ watch,性能成本不是那么大 !!
要使用$broadcast
将此行代码添加到您的服务中:
$rootScope.$broadcast('WatchedData', data);
在您的控制器中执行以下操作:
$scope.$on('WatchedData', function(event) { return stuff });
详细了解$rootscope.$broadcast
检查 this SO回答
答案 1 :(得分:0)
我建议您使用解决,它会在控制器和View在您的路由文件中实例化之前加载数据,并将您的服务注入功能
您可以观看此演示PLunker Demo