当我尝试获取类似 "mydomain.com/something/somethingelse"
的路线时,我的 Express+Jade+AngularJS[v1.2.22] 应用程序遇到了问题或"mydomain.com/something/another/last"
...ETC。 (具有一个或多个路径分割)。
发生的情况是,Angular 路由提供程序在这种情况下无法找到要模板化的内容,并且不会在 <div ng-view>
下面渲染任何内容。标记,同时进入导致页面卡住并显示 "WARNING: Tried to load angular more than once"
的循环控制台一遍又一遍地记录。
这是我在 app.js
中的 Angular 模块路由配置:
var advocat = angular.module('advocat', ['ngRoute']).
config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
templateUrl: 'partials/index.html',
controller: 'IndexCtrl',
title: 'Inici'
}).
when('/eines/mapa', {
templateUrl: 'partials/index.html',
title: 'AB'
}).
otherwise({
templateUrl: 'partials/404.html',
title: "Pàgina no trobada"
});
$locationProvider.html5Mode(true);
}]);
据我调试,我发现只有当请求的路由具有 templateUrl
时才会出现问题。自页面加载以来尚未使用过。我将尝试以我的 app.js 路由配置为例进行解释:
第一:页面加载,"/whatever"
收到请求 -> 页面加载模板 'partials/404.html'
因为该路线不匹配任何 .when
Angular 用途.otherwise
(不会发生错误,因为路线没有分割)。
第二: "/eines/mapa"
使用页面中的链接请求 -> 错误(它应该使用 'partials/index.html'
模板作为模板,并且之前没有使用过)。
假设在第二 "/whatever/whatever2"
已请求而不是 "/eines/mapa"
-> 没有错误,因为它使用 'partials/404.html'
进行模板化( .otherwise
) 并且此模板已在第一个页面加载中使用(在 'partials/404.html'
模板之前已使用过几个请求的情况下也可以使用)。
最佳答案
我发现问题是由 templateUrl
引起的路径,应该是'/partials/index.html'
而不是'partials/index.html'
.
否则,当 Angular 向服务器发出 HTTP GET 请求以获取模板 HTML 文件时,它会请求相对路径。如果指定的路线类似于 '/example/example2'
Angular 将请求 templateUrl
在路径 '/example/partials/index.html'
,导致错误。
关于javascript - 使用 Angular-route 构建带有 > 1 个斜杠的模板路由时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533294/