Поэтому я пытаюсь вывести некоторый id
из параметров URL.
Вот мои состояния:
$stateProvider
.state('parent', {
url: '/parent',
templateUrl: 'path/to/parent.html',
controller: 'lolController'
})
.state('parent.child', {
url: '/child-profile/:id',
templateUrl: 'path/to/child.html',
resolve: {
someId: function ($stateParams) {
// I cant print the id from here
console.log("PARAMS", $stateParams.id)
return $stateParams.id;
}
},
})
контроллер
.controller('lolController',
['$scope', 'someId', function ($scope, someId) {
$scope.someId = someId;
}])
Но всякий раз, когда я пытаюсь получить доступ к url /parent/child-profile/123abc
я получаю сообщение об ошибке Unknown provider: someId
См. Здесь ошибку. ,
Как это исправить? Благодарю.
РЕДАКТИРОВАТЬ
Ответ, предоставленный Jay Shukla, помог мне получить эту идею.
parameter
не undefined
потому что я объявил контроллер в родительском состоянии, прежде чем на самом деле вызывать дочернее состояние, которое содержит значение из его url. Вот простое решение, с которым я столкнулся, с помощью Джей Шуклы.
$stateProvider
.state('parent', {
url: '/parent',
templateUrl: 'path/to/parent.html',
})
.state('parent.child', {
url: '/child-profile/:id',
templateUrl: 'path/to/child.html',
controller: 'lolController'
})
Я удалил объявление controller
из родительского состояния и переместил его в дочернее состояние. Поскольку в моей ситуации шаблон родительского состояния содержит только <div ui-view></div>
.
Идея такова:
Только состояние вложенно, но оба html разделены, поэтому модели контроллера не будут унаследованы - Jay Shukla
Каждое государство может иметь свой собственный контроллер.
Пожалуйста, добавьте/отредактируйте еще, чтобы улучшить этот вопрос.
Попробуйте ввести $stateParams
тогда вы получите идентификатор в этом объекте.
Как это
.controller('lolController',
['$scope', '$stateParams', function ($scope, $stateParams) {
$scope.someId = $stateParams.id;
}])
Вы также можете определить свои параметры по-разному, как показано ниже.
url: '/child-profile/:id', // Inside stateparams you will get id as key
OR
url: '/child-profile/{id}',
OR
url: '/child-profile/:{id:int}', // Id with integer value