2013-04-02 20 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'から戻ることができます。どうして?また、2番目のルートに余分なカンマがあります。さらに、あなたの '../../'パスは、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

関連する問題