状态参数没有进入其他状态

时间:2017-03-03 09:13:39

标签: javascript angularjs

我有一个场景,当我点击一个链接时,我需要更改路线,并添加一些参数到另一个状态。

这里的问题是当我在其他状态下控制它时,参数是空的

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

任何帮助都将不胜感激。

2 个答案:

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

PLEASE CHECK THIS DEMO