У меня есть одно родительское состояние, внутри которого есть два дочерних состояния, и я собираюсь показать одно состояние на основе URL
.
Из этих двух states
один имеет такие параметры, как param1
и param2
, я использую params
опцию ui-router внутри определения состояния.
Штат
$stateProvider.state('tabs.account', {
url: '/account',
views: {
'content@tabs': {
templateUrl: 'account.html',
controller: function($scope, $stateParams) {
//This params are internally used to make ajax and show some data.
$scope.param1 = $stateParams.param1;
$scope.param2 = $stateParams.param2;
},
}
},
params: {
param1: { value: null }, //this are optional param
param2: { value: null } //because they are not used in url
}
});
Если вы посмотрите на мой маршрут, параметр params на самом деле не представлен внутри URL
, поэтому я рассматриваю его как необязательный.
Проблема
Посмотрите на plunkr, я показал две вкладки Аккаунт и Опрос,
- Нажмите на вкладку «Обзор», затем добавьте некоторые данные в
textarea
, которые показаны. Нажмите Перейти к учетной записи, чтобы передать эти значения
textarea
на другую вкладку Учетная запись, выполнивui-sref="tabs.account({param1: thing1, param2: thing2})"
на привязке.Теперь вы увидите значения
param1
иparam2
в html, которые были назначены области видимости из$stateParams
.- Теперь снова нажмите на вкладку Опрос, и вы попадете на страницу опроса.
- Просто щелкните браузер назад, вы заметите, что значение
param
не становитсяnull
.
Я полагаю, вы получили то, что я хотел спросить, почему значение необязательного параметра не было сохранено? поскольку они были частью государства.
Я знаю, что могу решить эту проблему с помощью двух решений.
- Создав один сервис, который будет обмениваться данными между двумя представлениями.
- Добавляя параметр внутри URL-адреса состояния. как
url: '/account/:param1/:param2',
(но я бы не предпочел это)
Я уже пробовал angular-ui-routers sticky states
но мне кажется это не подходит. Каков лучший способ для этого?
Есть ли способ, с помощью которого я могу заставить работать мой вариант использования, буду признателен за любые идеи.
Github Ссылка на выпуск здесь