2017-03-03 67 views
0

我有一個場景,當我點擊一個鏈接時,我需要改變路線,並添加發送一些參數到另一個狀態。狀態參數沒有進入其他狀態

這裏的問題是PARAMS是空的,當我在其他國家安慰它

<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

在vm.goToDetails console.log(Id)中添加控制檯是否在那裏獲取正確的數據? –

+0

你能看到「{{item.title}}」的結果嗎? – Jax

+0

是在URL中可見的參數嗎? – tomek550

回答

0

您需要在路由URL指定的參數名: /一些路由/:FID

+0

在路由上面你可以看到我已經在url中提到它 –

+0

即使沒有指定它也必須工作 –

0

我沒有發現任何問題與代碼,可能是問題是與resolved parameter注射。

我用你的代碼創建了一個DEMO。這可能對你有幫助。

下面是配置,

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; 
}) 

PLEASE CHECK THIS DEMO

+0

@tania saxena請檢查我的答案。 – Sravan