2017-03-03 6 views
0

Ich habe ein Szenario, wo ich, wenn ich auf einen Link klicken muss ich die Route ändern und auch senden einige Parameter an den anderen Staat.Zustand Params nicht in anderen Zustand

Das Problem hier ist die params leer ist, wenn ich es in anderem Zustand tröste

<div ng-repeat="items in vm.Items"> 
    <a ng-click="vm.goToDetails(items.id)">{{items.title}}</a> 
</div> 

Controller:

vm.goToDetails = function(Id) { 
    $state.go('Details', { 
      'fid': Id 
    }); 
} 

Route:

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

Jede Hilfe würde geschätzt.

+0

Hinzufügen einer Konsole in vm.goToDetails console.log (Id) erhalten Sie die richtigen Daten dort? –

+0

Können Sie das Ergebnis von '{{item.title}}' sehen? – Jax

+0

sind Parameter in URL sichtbar? – tomek550

Antwort

0

Sie müssen die Parameter-Namen in der Route-URL angeben: /some-Route /:

fid
+0

In Route oben kann man sehen, ich habe es in der URL erwähnt –

+0

Es muss funktionieren, auch wenn nicht angegeben –

0

ich kein Problem mit dem Code gefunden habe, können das Problem mit der Injektion von resolved parameter ist.

Ich habe eine DEMO mit Ihrem Code erstellt. Dies kann für Sie hilfreich sein.

Hier 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'); 

}); 

Controller, der wiederholt Objekt enthält,

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

}) 

Dies ist der Controller, wo Sie selectedProduct

app.controller('DetailController',function($scope,$state,selectedProduct){ 
    $scope.selectedProduct = selectedProduct; 
}) 

PLEASE CHECK THIS DEMO injizieren

+0

@tania Saxena, überprüfen Sie bitte meine Antwort. – Sravan

Verwandte Themen