我有一个场景,当我点击一个链接时,我需要更改路线,并添加一些参数到另一个状态。
这里的问题是当我在其他状态下控制它时,参数是空的
<div ng-repeat="items in vm.Items">
<a ng-click="vm.goToDetails(items.id)">{{items.title}}</a>
</div>
控制器:
vm.goToDetails = function(Id) {
$state.go('Details', {
'fid': Id
});
}
路线:
$stateProvider.state('Details', {
url: '/details/:fid',
resolve: {
selectedProduct: ['$state', '$stateParams',
function($state, $stateParams) {
console.log($stateParams.fid) //getting empty string here
console.log($state.params.fid)//getting undefined here
}
]
}
});
任何帮助都将不胜感激。
答案 0 :(得分:0)
您需要在路线网址中指定参数名称: /一些路由/:FID
答案 1 :(得分:0)
我没有发现代码有任何问题,可能是注入resolved parameter
的问题。
我使用您的代码创建了一个DEMO。这可能对您有所帮助。
这是config,
app.config(function($stateProvider,$urlRouterProvider){
$stateProvider.state('Details', {
url: '/details/:fid',
templateUrl: 'detail.html',
controller: 'DetailController',
resolve: {
selectedProduct: ['$state', '$stateParams',
function($state, $stateParams) {
console.log($stateParams.fid) //getting empty string here
alert($stateParams.fid) //getting empty string here
return $stateParams.fid
}
]
}
});
$stateProvider.state('login',{
url: '/login',
templateUrl: 'login.html',
controller: 'LoginController'
});
$urlRouterProvider.otherwise('/login');
});
包含重复对象的控制器
app.controller('LoginController',function($scope,$state){
$scope.Items = [{id: 1,title: "Title1"},{id: 2,title: "Title2"},{id: 3,title: "Title3"}]
$scope.goToDetails = function(Id) {
console.log(Id)
$state.go('Details', {
'fid': Id
});
}
})
这是您可以注入 selectedProduct
app.controller('DetailController',function($scope,$state,selectedProduct){
$scope.selectedProduct = selectedProduct;
})