2013-04-02 11 views
5

Jestem nowym użytkownikiem Angular.js i próbuję uzyskać routing działający, ale w mojej aplikacji druga trasa nie nazywa się listController, więc nie otrzymuję danych.Sterownik kątowy nie jest wywoływany

Przeszedłem przez wiele przykładów, ale nie mogę się domyślić, dlaczego to nie działa w mojej aplikacji? Dostaję szablon z powrotem /Categories/SixGrid, ale jak wspomniano kontroler wydaje się nie być wywoływany. Czy jest coś oczywistego, że nie robię źle? A może ktoś może podzielić się swoją wiedzą na temat tego, dlaczego to nie działa?

Zaktualizowany kod:

angular.module('App', ['App.Controller']). 
    config(['$routeProvider', function ($routeProvider) { 
     $routeProvider.when('/', { templateUrl: '/Home/Splash' }); 
     $routeProvider.when('/Categories/List/:slug', { templateUrl: '/Categories/SixGrid', controller:'listController' }); 
    }]); 

angular.module('App.Controller', []) 
    .controller("listController", function ($scope, $http) { 
     $http.get('../../api/cat/' + $routeParams.slug).success(function (data) { 
        $scope.products = data; 
       }); 
}); 
+0

Mówisz, że masz szablon wróć z 'Categories/List', podczas gdy twoja trasa określa, że ​​szablon znajduje się w' Categories/SixGrid'. Dlaczego? Ponadto masz drugą przecinkę na swojej drugiej trasie. Dodatkowo twoja ścieżka '../../' jest dość rzadka dla wywołania API, chociaż nie powinno to powodować błędu. – Stewie

+0

Dzięki Stewie, był błąd ortograficzny. 'Categories/SixGrid' to poprawny szablon, który wraca. Usunięto również przecinek. Trasa Api nie jest obecnie idealna, ale nadal znajduje się we wczesnej fazie dev – ojhawkins

+2

możesz pokazać swój szablon. Lepiej umieść swój kod na jsfiddle. aby ludzie mogli się z tym bawić i szybciej dowiedzieć, co jest nie tak :) – nXqd

Odpowiedz

5

Spróbuj owinąć nazwę kontrolera w cudzysłowie:

$routeProvider.when('/Categories/List/:slug', { 
    templateUrl: '/Categories/SixGrid', 
    controller: 'listController' 
}); 

także dobrą praktyką jest określenie kontrolerów w ten sposób (bo zakres globalny pozostaje czysta):

angular.module('App').controller("listController", function() { 
    //controllerCode 
}); 
+0

Dzięki @ ardentum-c. Nadal nie ma szczęścia, zaktualizowałem powyższy kod do tego, co mam teraz. Czy problem może być gdzie indziej? – ojhawkins

Powiązane problemy