0
所以我試圖從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>
。
的理念是:
惟一狀態是嵌套但兩者HTML是分開的,以便控制器型號不會被繼承 - 傑伊舒克拉
每個國家都可以有自己的控制器。
請添加/編輯更多以改善此問題。
它說不確定。 :( – CENT1PEDE
什麼是你的網址,什麼是完整的錯誤 –
我試過所有3種方式,都是'undefined'。/順便我訪問URL'/ parent/child-profile/5 ampl3' – CENT1PEDE