ANGULAR-UI-ROUTER: resolver o estado do URL

Estou criando um aplicativo com estados dinâmicos e, às vezes, preciso resolver o nome do estado pelo URL.

por exemplo: eu tenho/dashboard/user/12268 e eu preciso pegar o estado'dashboard.user'.

Existe alguma maneira de fazer isso com as ferramentas fornecidas porui-router? Não consigo descobrir como fazer isso agora ...

Estou criando um aplicativo com carregamento de módulo dinâmico com requireJS. Na primeira vez, não há problema porque o usuário é enviado ao estado de login. Após o login, eu uso o exigir para carregar apenas os estados aos quais o usuário tem acesso. Mas quando o usuário recarrega a página, carrego os módulos novamente e preciso resolver a URL para um estado, e há o problema. Comecei a tentar com o urlMatcherFactory, mas não consigo resolvê-los.

O estado é carregado após a resolução da URL.

O fluxo é (após a atualização da páginahttp://localhost:8090/index.html#/dashboard/user/12268):

iniciar o aplicativo (sem estados)neste ponto,ui-router foi carregadoobter os estados aos quais o usuário tem acesso e registrá-los (esses estados são registradosdepois de fase de configuração)descobrir se eu tenho um estado que corresponde ao URL fornecido para redirecionar para lá. É aqui que estou preso.

Para carregar estados após a inicialização do aplicativo, usei uma variação deA solução de Ben Nadel isso inclui estados e constantes.

Minhasdata-main em RequireJS tem este código de inicialização:

require.config({
    // REQUIREJS CONFIGURATION
});

require(['app'], function (app) {
    app.bootstrap(document);

    var ng = angular.injector(['ng']);
    var $window = ng.get('$window')
    var $q = ng.get('$q');

    var appStorage = $window.localStorage;
    var loadedManifests;

    try {
        loadedManifests = JSON.parse(appStorage.getItem('loadedManifests'));
    } catch(e) {
        loadedManifests = [];
    }

    if (!angular.isArray(loadedManifests) || loadedManifests.length === 0) {
        $q.all([
                app.loadManifest('login/manifest'), //loadMainfest function loads the states for login
                app.loadManifest('logout/manifest') //load states for logout
            ])
            .then(function () {
                app.injector.get('$rootScope').$evalAsync(function () {
                    app.injector.get('$state').go('login');
                });
            });
    } else {
        var promisesArray = [];

        for(var i = 0; loadedManifests[i]; i++) {
            promisesArray.push(app.loadManifest(loadedManifests[i])); //load all manifests registered on localstorage
        }

        $q.all(promisesArray).then(function(){
            //TODO: Stuck. Get URL from querystring and resolve to valid state, or redirect to /login
        });
    }
});

oloadManifest A função registra todos os elementos pós-inicialização no meu aplicativo (serviços, fábricas, controladores, roteadores, ...).

Obrigado pela ajuda,
Alx

questionAnswers(4)

yourAnswerToTheQuestion