$ routeProvider.when(..)没有捕获所有的URL

设置:玉,angular,expression,节点。

在我的routeProviderangular,我有一些问题。 我正在请求一个带有一个参数的url,

 var app = angular.module('myApp', ['ngRoute']); app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { $routeProvider //... omitted some url/pages here //start of SPA .when('/dashboard/', { templateUrl: 'partials/index', controller: 'dashIndexCtrl' }) .when('/dashboard/class/:id',{ templateUrl: 'partials/class', controller: 'classCtrl' }) .otherwise({ redirectTo: '/' }); $locationProvider.html5Mode(true); }]); 

当我打电话localhost/dashboard/class/TEST

我被redirect到根。

我在服务器端声明我的路线如下:

 app.get('/dashboard', routes.dashboard); app.get('/dashboard/partials/:name', routes.partials); app.get('/api/class/:id', api.classGet); 

我的控制器名称与routeProvider匹配。 在这种情况下,控制器代码如下所示:

 app.controller('classCtrl', function($scope, $http, $routeParams){ $http.get('/api/class/' + $routeParams.id) .success(function(dataJson){ console.log(dataJson); }); }); 

为什么routeProvider缺less这个url? 我在我的控制器中设置了断点,所以我确定它没有被调用。 我的partials/class.jade也没有被调用。 让我知道如果你需要更多的代码或目录信息。 提前致谢。


经过进一步调查:
如果我去: localhost/dashboard/partials/class将加载该玉文件。 所以这绝对是控制器。

目录结构,我相信这是我现在的问题….

 +---\ | +---\views | +---index.jade | +---dashboard.jade | +---\partials | +---index.jade | +---class.jade 

看一下控制台,观察AngularJS试图从/partials/index加载模板,然后从/dashboard/partials/index

在config部分将templateUrlpath设置为/dashboard/partials/index

原因:angular-route.js

 templateUrl = $sce.getTrustedResourceUrl(templateUrl); if (angular.isDefined(templateUrl)) { next.loadedTemplateUrl = templateUrl; template = $http.get(templateUrl, {cache: $templateCache}). then(function(response) { return response.data; }); } 

route path没有连接templateUrl – 只需从应用程序的Angular根目录加载tempalteUrl