在Angular中,在资源服务填充多个模型后触发代码的最佳做法是什么。 Nest $ 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
答案 0 :(得分:2)
如果您使用的是Angular路由,通常使用when()方法的resolve
参数来完成此操作。另请参阅Delaying AngularJS route change until model loaded to prevent flicker
如果您不希望在加载数据之前延迟路由更改,则可以使用$ q设置自己的承诺。使用$ q.all()等待所有承诺解决。请参阅https://stackoverflow.com/a/15117739/215945和https://stackoverflow.com/a/14545803/215945