将解析提供程序从子状态注入到控制器
Inject a resolve provider from child state to controller
所以我试图从 url 参数中提取一些 id
。
这是我的状态:
$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>
。
想法是:
Only state is nested but both html are separate so controller models will not be inherited - Jay Shukla
每个州都可以有自己的控制器。
请add/edit更多地改进这个问题。
尝试注入 $stateParams
然后您将在该对象中获得 id。
像这样
.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
所以我试图从 url 参数中提取一些 id
。
这是我的状态:
$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>
。
想法是:
Only state is nested but both html are separate so controller models will not be inherited - Jay Shukla
每个州都可以有自己的控制器。
请add/edit更多地改进这个问题。
尝试注入 $stateParams
然后您将在该对象中获得 id。
像这样
.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