所以我试图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
See error here。.
我该如何解决?谢谢。
编辑
Jay Shukla提供的答案帮助我得到了这个想法。
这parameter
是undefined
因为我在实际调用包含来自其 url 的值的子状态之前在父状态上声明了控制器。这是我在 Jay Shukla 的帮助下想出的一个简单解决方案。
$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
每个状态都可以有自己的控制器。
请添加/编辑更多以改进此问题。