У меня есть одно родительское состояние с двумя дочерними состояниями, внутри которого я собираюсь показать одно состояние на основе URL
.
Из этих двух states
нужно иметь такие параметры, как param1
и param2
, я использую параметр params
для определения внутреннего определения ui-router.
Государство
$stateProvider.state('tabs.account', {
url: '/account',
views: {
'[email protected]': {
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 Ссылка на проблему здесь