当我尝试获取"mydomain.com/something/somethingelse"
或"mydomain.com/something/another/last"
等路线时,我的 Express + Jade + AngularJS [v1.2.22] 应用程序出现问题。 。等等。 (具有一个或多个路径细分)。
Angular路径提供程序在某种情况下无法找到这个案例的模板,并且在<div ng-view>
标记下面没有呈现任何内容,同时进入导致页面冻结并显示的循环"WARNING: Tried to load angular more than once"
控制台一遍又一遍地登录。
这是app.js
中我的角度模块路线配置:
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"
被请求 - &gt;带有模板'partials/404.html'
的网页加载,因为该路线不匹配任何.when
角度使用.otherwise
(因为路线没有细分,所以不会发生错误)。
第二次 "/eines/mapa"
使用页面中的链接 - &gt; 错误(它应该使用'partials/index.html'
模板模板并且它没有&之前曾经使用过。)
假设已经请求第二次 "/whatever/whatever2"
而不是"/eines/mapa"
- &gt; 没有错误,因为它带有'partials/404.html'
的模板(.otherwise
)此模板已在第一次页面加载中使用(在'partials/404.html'
模板之前曾使用过几次请求的情况下也可以使用)。
答案 0 :(得分:1)
我发现问题是由templateUrl
路径引起的,它应该是'/partials/index.html'
而不是'partials/index.html'
。
否则,当angular向服务器发出HTTP GET请求以获取模板HTML文件时,它会请求相对路径。如果指定的路线类似于'/example/example2'
,则会在路径templateUrl
中请求'/example/partials/index.html'
,从而导致错误。