0

いくつかの分散ファイルからそれらをマージすることにより、一連の状態を動的にロードしようとしています。

$http.getでそれらすべてを収集し、 $stateProvider.state(name, config) ですべて追加します。

ここで大丈夫です。

問題は、ルート URL "/" 以外の別の URL を入力すると、同じ URL が正しい状態に解決されないことです。

ルート状態からアプリをロードしてそこから移動すると、$urlRouterProvider はロードされたすべての状態と一致するようですが、子状態からアプリに入ろうとすると、たとえば "/#/anotherpage "、どの URL/状態とも一致できず、.otherwise('/')にフォールバックします。

すべての状態が読み込まれるのを待たずに URL を解決しようとするようなものです。

$urlRouterProvider.deferIntercept()を使用して続行を停止しようとしています。構成後、同期を再度有効にします。

app.config(configure).run(['$urlRouter', function($urlRouter){
        $urlRouter.sync();
        $urlRouter.listen();
    }]);

$urlRouterProviderが.config()中にすべての状態が読み込まれるまで待機し、正しい状態に一致するようにするにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

私が持っていたものが関連しているかどうかはよくわかりませんが、投稿します:構成フェーズでオブジェクトを作成していました。オブジェクト構成はオーバーライド可能だったので、プロバイダーの構成フェーズで状態を構築できませんでした。そこで、プロバイダーの $get で $stateProvider 呼び出しと $urlRouterProviders 呼び出しを移動しました。

生成された状態の 1 つを目指しようとすると、最初のページの読み込み時または更新時に機能しませんでした。プロバイダーのインスタンス化を強制して機能させるには、「module.run(myProvider){}」を使用する必要がありました。$urlRouterProvider が何かを解決する前に app.run が実行されていたと思います。

別の解決策は、アプリケーションのブートストラップを延期して ng-app を削除し、準備ができたら angular.bootstrap を使用することです。

于 2016-02-05T15:34:14.287 に答える