【发布时间】:2017-03-29 04:51:06
【问题描述】:
我遇到了这种情况,我可以看到 $stateParams 被填充在一个地方,但没有在另一个地方。我是 angular-ui-router 的新手,因此将不胜感激。谢谢!
在以下状态的解析块中,我将 $stateParams 作为数据“campaign”函数中的依赖项注入,并且填充了 $stateParams。
.state('campaign', {
url: "/campaign/{campaignId:int}",
templateUrl: campaign_template,
controller: 'CampaignCtrl',
parent: 'org',
abstract: true,
resolve: {
campaign: function(CampaignService, $stateParams) {
console.log('$stateParams is populated here!', $stateParams)
return CampaignService.get($stateParams.campaignId)
.then(function(campaign) {
return campaign;
});
}
}
然而,在 CampaignService 函数中,我需要 $stateParams 但它是 空的。我很困惑,因为我假设因为当我将它注入 解决块,无论我在哪里再次得到它都应该是一样的。
.service('CampaignService', function($injector, $q) {
this.get = function() {
var $stateParams = $injector.get('$stateParams');
console.log('$stateParams is empty here!', $stateParams);
var deferred = $q.defer();
setTimeout(function() {
deferred.resolve({
name: 'campaignName'
});
}, 1000);
return deferred.promise;
}
})
【问题讨论】:
-
为什么你的服务中需要 $stateParams?你不只需要
campaignId值吗? -
代码使用的是哪个版本的UI-Router?
标签: angularjs angular-ui-router