0

アプリへのログインに成功した後、ユーザーが利用できるすべての状態を から動的にロードしたいと考えていますapi/jsapp.module動的にロードされる状態には、唯一の既知の状態であり、同じダウンロード内の他のすべての状態のルートである抽象的な状態が常に含まれます。

私の最初のアプローチは、ログイン後に oc.lazyLoad を使用することでした。正常に機能しましたが、ブラウザを更新すると機能しませんでした。次に、module.run で oc.lazyLoad を使用してロードしようとしましたが、機能しませんでした。

oc.lazyLoad を ui-router エクストラの futureState と一緒に使用しようとしましたが、動作させることができません。

$futureStateProvider私が望むことを行うことが可能である場合でも、構成方法について助けが必要です。

4

1 に答える 1

2

遅延ロードは必要ありません。

動的状態を追加するため。設定段階で状態プロバイダーの参照をアプリに追加するだけです。

angular.module('app.module').config(function ($stateProvider, $urlRouterProvider) {
        angular.module('app.module').$stateProvider = $stateProvider;        
        //send to login first
        $urlRouterProvider.otherwise("/user/login");      
});

次に、ユーザーのログインが成功した後のログインサービスで、状態プロバイダーにいくつかのニュース状態を追加します。

loginSuccess(){
   $http.get('api/states/').then(function(states){
     bindStates(states);
   });
}

function bindStates(states) {
    states.forEach(function bind(stateData) {
        // add new states
        angular.module('app.module').$stateProvider.state({
            name: stateData.name,
            url: stateData.url,
            template: stateData.template,
            params: {
                'pageId': null
            },
            abstract: stateData.abstract
        });
    });

    // go to default state
    $state.go('main');
}
于 2016-06-10T16:11:49.043 に答える