2014-04-14 13 views
7

mam te trasy zdefiniowane:

.state('sport', 
     url: '/sport' 
     templateUrl: '/templates/sport' 
     controller: 'SportCtrl' 
    ) 
    .state('sport.selected' 
     url: '/:sport' 
     templateUrl: '/templates/sport' 
     controller: 'SportCtrl' 
    ) 

I mam ten kontroler próbuje użyć: param sportowej wydane przez państwa sport.selected.

 angular.module('myApp') 
     .controller('SportCtrl', ['$scope', 'ParseService', 
        '$stateParams', function ($scope, ParseService, $stateParams) { 

      var sportURL = $stateParams.sport; 

     ... 
    }); 

Z jakiegoś powodu, to zwraca niezdefiniowana gdy zgłoszę $ stateParams.sport w sterowniku, chociaż myślę, że określono je w trasach. Dlaczego tak się dzieje?

Dzięki za pomoc!

Odpowiedz

6

Po uzyskaniu dostępu do adresu URL /sport/12 The SportCtrl zostanie instancja dwukrotnie: raz dla państwa sport, a raz dla państwa sport.selected. I dla pierwszego stanu nie ma parametru związanego ze stanem, więc $stateParams.sport jest niezdefiniowany.

Należy zauważyć, że używanie tego samego szablonu dla stanu i podstanu jest dość dziwne. Będziesz miał szablon osadzony wewnątrz elementu div widoku tego samego szablonu.

+0

Dzięki, jestem nowy w korzystaniu z interfejsu ui, więc było to dla mnie nieco kłopotliwe. Skończyło się na tym, że robiłem nowy kontroler i nie było już ono podtypem i teraz działa dobrze. – nggonzalez

Powiązane problemy