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() を使用して、すべての promise が解決されるのを待ちます。https://stackoverflow.com/a/15117739/215945およびhttps://stackoverflow.com/a/14545803/215945を参照してください

于 2013-03-12T18:20:41.073 に答える