2013-04-02 38 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/SixGrid'中找到時,從'Categories/List'返回。怎麼來的?另外,你的第二條路線中有一個外部逗號。另外,您的'../../'路徑對於API調用有點不常見,儘管這不會導致錯誤。 – Stewie

+0

謝謝Stewie,是一個拼寫錯誤。 'Categories/SixGrid'是返回的正確模板。也刪除了逗號。 Api路由目前並不理想,但我仍然處於dev – 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

相關問題