0

在 Angular 中,在资源服务填充多个模型后触发代码的最佳实践是什么。嵌套 $scope.$watch?

现在,我正在作弊并检查数组中的值,这感觉不是很“有棱角”。

$scope.loaded = [];
$scope.modelA = aResource.query({}, function() {$scope.loaded.push('a')});
$scope.modelB = bResource.query({}, function() {$scope.loaded.push('b')});

$scope.$watch(loaded.length, function(newValue) {
    if ($scope.loaded.indexOf(modelA) != -1 && $scope.loaded.indexOf(modelB) != -1) {
        console.log('done!'); 
    } 
});

https://groups.google.com/forum/?fromgroups=#!topic/angular/TizlifUL7FU

4

1 回答 1

2

如果你使用 Angular 路由,这通常是通过when()方法的resolve参数来完成的。另请参阅延迟 AngularJS 路由更改直到模型加载以防止闪烁

如果您不想在数据加载之前延迟您的路线更改,您可以使用 $q 设置自己的 Promise。使用 $q.all() 等待所有承诺解决。请参阅https://stackoverflow.com/a/15117739/215945https://stackoverflow.com/a/14545803/215945

于 2013-03-12T18:20:41.073 回答