Я только начал изучать angularjs, и я использую angular -ui-router. Я пытаюсь отправить данные из одного состояния в другое с помощью $state.go
, но у меня нет успеха. Вот что я до сих пор:
Я не включил html намеренно, потому что предположил, что он не нужен, если это необходимо, скажите мне, и я добавлю его.
Я сконфигурировал свои состояния, как показано ниже:
$stateProvider
.state('public', {
abstract: true,
templateUrl: 'App/scripts/main/views/PublicContentParent.html'
})
.state('public.login', {
url: '/login',
templateUrl: 'App/scripts/login/views/login.html',
controller: 'loginCtrl'
})
$stateProvider
.state('private', {
abstract: true,
templateUrl: 'App/scripts/main/views/PrivateContentParent.html'
})
.state('private.visits', {
url: '/visits',
views: {
'main': {
controller: 'visitsListCtrl',
templateUrl: 'App/scripts/visits/views/VisitsList.html'
}
}
});
Когда мой LoginController
вызывается, он выполнит следующий код:
loginModule.controller('loginCtrl', ['$state', function ($scope, $state) {
$state.go('private.visits', { name : "Object"});
}]);
Когда активна страница private.visits
, я пытаюсь распечатать $stateParams
:
visitsModule.controller('visitsListCtrl', ['$stateParams',
function ($stateParams) {
console.log($stateParams);
}]);
Как вещи state $stateParams - пустой объект. Я ожидал, что он должен содержать объект, который я передал в loginCtrl.
ИЗМЕНИТЬ
Кажется, что если private.visits
url имеет этот формат url '/visits/:name'
, и я также добавляю параметры свойства: [ "name" ] Я получаю доступ к объекту, который я отправляю из состояния public.login
.
Побочным эффектом является то, что параметры добавляются к URL-адресу, который является логическим.
Я попытался сделать то же самое с дочерним состоянием без url, и в этом случае кажется, что у меня нет доступа к параметрам, которые я передал из public.login
.
Как отправить данные в дочерние состояния?