2015-05-18 9 views
1

Я использую UI Router с включенным html5Mode, состояния загружаются из JSON.AngularJS. Сохранять состояние после перезагрузки страницы

Ожидаемое поведение после F5 или при вставке URL-адреса, соответственно, текущее состояние перезагружается или переходит в указанное состояние, вместо этого загружается начальное состояние приложения.

См., Например, root/parent/child перенаправляется в root /.

Кстати, навигатор с ui-sref отлично работает.

Итак, как можно сохранить состояние после перезагрузки страницы?

+0

Вам нужна помощь localStorage –

+0

, если вы используете ui-router, у него есть расширения, чтобы сделать это – harishr

ответ

0

Кажется немного Hacky, но работает на данный момент.

app.run(['$location', '$state', function ($location, $state) { 
    function stateFromUrl() { 
    var path = $location.path(), 
     hash = $location.hash(); 

    // do JSON states map parsing and find a corresponding to the URL state 

    return state; 
    } 

    if (stateFromUrl) { 
    $state.go(stateFromUrl); 
    } else { 
    $state.go('home'); // initial state 
    } 
}]); 
0

Пожалуйста, можете ли вы выслать свой код здесь? В частности, $ stateProvider. Это пример правильного $ stateProvider и она отлично работает:

$stateProvider.state('main.admin', { 
    url: '/admin', 
    resolve: {}, 
    views: { 
     '[email protected]': { 
      controller: 'AdminController as admin', 
      templateUrl: 'main/admin/admin.tpl.html' 
     } 
    } 
}); 
+0

Pardon, поскольку не отвечал ранее. Я исправил эту проблему, проверив URL-адрес, проанализировав его и найдя соответствующее состояние в JSON, а затем создав $ state.go() в найденном состоянии. – Svyatoslav

1

Чтобы сохранить состояние страницы после перезагрузки приложения, необходимо указать URL-адрес состояния. когда вы включаете модуль ui-route, url будет разобран и отправлен в соответствующее состояние. В большинстве случаев вам не нужно разбирать URL-адрес вручную, чтобы сделать это.

Смежные вопросы