$ routeProvider.when(..)没有捕获所有的URL
设置:玉,angular,expression,节点。
在我的routeProvider
angular,我有一些问题。 我正在请求一个带有一个参数的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
。