AngularJSのngResourceで同期処理


やりたいことは、ログイン情報など、必ず入っていなくてはいけない情報は起動時に変数に入れておきたいのです。

$promiseを使う方法や、$emitと$onで通信する方法も試してみたのですが、非同期は面倒です。ただの代入でやりたいです。

UI-
Routerのresolveとpromiseを組み合わせるとページ遷移中に通信完了まで待つことが出来るので、今のところそれで実現は出来るのですが、ログイン情報が必要な全ページにresolveを仕掛けるのも面倒なので、もう少し簡便な方法はないものでしょうか？




Angularの`$routeProvider`を下記のように`extend`して、必要不可欠なデータの取得を`route`の`resolve`に入れたらどうですか？

[code]

      angular
        .module('app', ['ngRoute', 'ngResource'])
        .config(['$routeProvider','$resource', function($routeProvider, $resource) { 
    
          var url = 'https://my.domain/REST/whatever';        
          var resolvedProvider = angular.extend({}, $routeProvider, {
            when: function(path, route) {
              route.resolve = { required: $resource(url).get({}) };
    
              $routeProvider.when(path, route);
    
              return this;
            }
          });
    
          resolvedProvider.when('/', {
            templateUrl: 'app.html',
            controller: 'AppCtrl'
          }).when('/other', {
            templateUrl: 'other.html',
            controller: 'OtherCtrl'
          }); // ...
        }]);
    
[/code]




Angularの`$routeProvider`を下記のように`extend`して、必要不可欠なデータの取得を`route`の`resolve`に入れたらどうですか？

[code]

      angular
        .module('app', ['ngRoute', 'ngResource'])
        .config(['$routeProvider','$resource', function($routeProvider, $resource) { 
    
          var url = 'https://my.domain/REST/whatever';        
          var resolvedProvider = angular.extend({}, $routeProvider, {
            when: function(path, route) {
              route.resolve = { required: $resource(url).get({}) };
    
              $routeProvider.when(path, route);
    
              return this;
            }
          });
    
          resolvedProvider.when('/', {
            templateUrl: 'app.html',
            controller: 'AppCtrl'
          }).when('/other', {
            templateUrl: 'other.html',
            controller: 'OtherCtrl'
          }); // ...
        }]);
    
[/code]

