告诉所有指令数据已经加载的正确方法

时间:2015-01-16 22:17:49

标签: angularjs angularjs-directive

我有SPA,在第一页上我从REST服务加载一个大数据对象。

第一页包含由控制器解析的主要部分,当前作用域中的一组指令,它们呈现接收对象的某些部分,以及$ rootscope中的一个头部指令,它还呈现接收数据的某些部分。

我在控制器中调用API,当所有数据都被加载时,我应该通知它有关渲染加载数据的所有相关指令。

现在我使用$watch()$watchGroup()作为相同的范围指令,使用$rootScope.$broadcast()作为$ rootscope的标题。

还有更优雅的解决方案吗?

这样做的最佳方式是什么?

1 个答案:

答案 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的更多信息。