我有SPA,在第一页上我从REST服务加载一个大数据对象。
第一页包含由控制器解析的主要部分,当前作用域中的一组指令,它们呈现接收对象的某些部分,以及$ rootscope中的一个头部指令,它还呈现接收数据的某些部分。
我在控制器中调用API,当所有数据都被加载时,我应该通知它有关渲染加载数据的所有相关指令。
现在我使用$watch()
和$watchGroup()
作为相同的范围指令,使用$rootScope.$broadcast()
作为$ rootscope的标题。
还有更优雅的解决方案吗?
这样做的最佳方式是什么?
答案 0 :(得分:0)
这听起来像ngResource的一个很好的用例,它是REST资源的官方Angular模块。我建议您为您的资源创建服务,如:
app.factory('Widget', function ($resource) {
return $resource('/api/v1/widgets/:id');
});
然后您可以在控制器中使用它来处理数据加载。
app.controller('WidgetController', function ($scope, Widget) {
$scope.widgets = Widget.query({active: true});
});
在您的views / templates /中,可以绑定到widgets
,这将是与查询匹配的小部件数组。小部件加载时,数组将为空,然后将填充结果 - 绑定将自动更新。
您还可以绑定到widgets.$resolved
,它(基本上)指示资源是否已完成加载。
查看有关ngResource here的更多信息。