2013-04-02 5 views
5

저는 Angular.js에 익숙하며 라우팅을 작동 시키려고 노력하고 있습니다. 그러나 내 앱에서는 두 번째 벨로우즈 라우트가 listController을 호출하지 않으므로 데이터를 다시 가져 오지 못합니다.각형 컨트롤러가 호출되지 않음

많은 실습 예제를 거쳤지만 내 응용 프로그램에서이 기능이 작동하지 않는 이유는 무엇입니까? 내가 템플릿을 다시 /Categories/SixGrid 얻을하지만 언급 한 컨트롤러가 호출되지 않는 것. 내가 잘못하고있는 것이 분명하지 않습니까? 아니면 아무도 왜 이것이 작동하지 않을지에 대한 지식을 공유 할 수 있습니까?

업데이트 코드 :

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

'Categories/List'에서 다시 돌아 오면 경로는'Categories/SixGrid'에서 템플릿이 발견되도록 지정합니다. 어째서? 또한 두 번째 경로에는 쉼표가 필요합니다. 덧붙여서, 당신의'../../'경로는 에러를 일으키지 않아도, API 호출에는 드물다. – Stewie

+0

감사 Stewie, 맞춤법 오류가 발생했습니다. 'Categories/SixGrid'는 되돌아 오는 올바른 템플릿입니다. 또한 쉼표를 제거했습니다. Api 경로는 현재 이상적은 아니지만 개발자의 초기 단계에 있습니다 – ojhawkins

+2

템플릿을 표시 할 수 있습니까? jsfiddle에 코드를 넣는 것이 좋습니다. 사람들은 그것을 가지고 놀 수 있고 더 빨리 무엇이 잘못되었는지를 발견 할 수 있습니다 :) – nXqd

답변

5

시도가 따옴표로 컨트롤러 이름을 감싸는 :

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

또한 좋은 방법은이 방법으로 컨트롤러를 정의하는 것입니다 (전역 범위가 깨끗한 남아 있기 때문에)

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

Thanks @ ardentum-c. 여전히 운이 없다, 나는 위의 코드를 지금 가지고있는 것으로 업데이트했다. 문제가 다른 곳에있을 수 있습니까? – ojhawkins

관련 문제