0

この質問で公開されている問題とよく似た問題があります ( AngularJS : Initialize service with asynchronous data )。私の違いは、angularAMD を使用してスクリプトを非同期的にロードしていることです。次の app.config で上記のアプローチに適合することはできません。

define(['angularAMD'], function (angularAMD) {
   var app = angular.module('app', []);
   app.config(['$routeProvider', function ($routeProvider) {
     // some code here
   }]);
   app.run(['srvRules', function (srvRules) {
     srvRules.getRules().then(function (result) {
        // I need to bootstrap only after I get the rules from the server
      });
   }]);
   return angularAMD.bootstrap(app);
});

編集1

これは私が達成しようとしているアプローチです: https://stackoverflow.com/a/21189057/2407203

編集2

詳細情報の追加: バックエンドとして webapi があります。これは、アプリケーションのセットアップに必要なあらゆる種類のビジネス ルールを提供するレガシー システムです。現時点で提供されている主な情報は次のとおりです。

  1. $translateProvider( http://angular-translate.github.io ) を使用して、辞書に現在のカルチャを動的に読み込みます。すべてのテキストは、この辞書から取得する必要があります。
  2. すべてのルート変更を監視し、返されたルールに基づいてアクセスを許可または制限するサービスがあります。
  3. ルールに基づいて、いくつかの情報を画面に配置する必要があります。これらの情報はすべて、最初の html のディレクティブ内にカプセル化されています。
  4. 一部の html コントロールは、ルールに基づいて表示される場合と表示されない場合があります。
4

1 に答える 1

0

簡単でエレガントな方法はありません。私は最終的に次のことをしました:

  1. ngRoute の代わりにui-router ( https://github.com/angular-ui/ui-router ) の使用を開始しました。
  2. 他のすべての状態の親であるルート抽象状態を作成しました。
  3. ルート状態の解決セクションを使用して、コントローラがインスタンス化される前に必要なすべてのデータをロードしました
于 2015-02-05T20:07:23.273 に答える