Angular - 异步更新&从服务渲染到控制器

时间:2016-08-19 19:25:55

标签: javascript angularjs asynchronous rendering

我有一个Service来监听webSockets(不能使用回调或承诺,数据更新是随机的)。服务获取更新并将其保存到服务对象。我有一个带有控制器的角度应用页面,其中包含$scope中的服务对象。

但是我在页面上渲染数据时遇到了问题。现在我使用$ timeout()更新视图,但寻找更优雅的方式。

我知道我可以在服务的对象上使用$watch,但我认为它对浏览器而言过于沉重。

那么在服务数据发生变化后渲染视图/控制器的正确方法是什么?

2 个答案:

答案 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