鉴于我的角色应用程序的基本示例位于<base href="/test/">
目录中,将应用程序发送回主(或根)路径的最佳方法是什么?菜单片段(下方)中的所有链接都有效,但“主页”链接会导致IE在后续请求中重新加载应用程序(HomeCtrl
)。
app.js
var basic = '<h1>{{title}}</h1><p>{{body}}</p>';
var app = angular.module('website', []);
app.config( function($routeProvider, $locationProvider) {
$routeProvider.
when('/', { template: basic, controller: HomeCtrl }).
when('/about', { template: basic, controller: AboutCtrl }).
when('/experiments', { template: basic, controller: ExperimentsCtrl }).
when('/:alias', { template: basic, controller: PageCtrl, resolve: { alias: resolveAlias } }).
otherwise({ redirectTo: '/' });
$locationProvider.html5Mode('true');
} );
menu.html
<base href="/test/">
....
<div id="menu">
<a href="./" class="btn">Home</a>
<a href="./about" class="btn">About</a>
<a href="./experiments" class="btn">Experiments</a>
<a href="./unicorn" class="btn">Unicorn</a>
</div>
更新
在IE9中,对root的每个请求都重新运行JS文件,然后两次触发路由事件。
LOG: MainCtrl Loaded!
LOG: routeChangeStart[object Arguments]
LOG: routeChangeSuccess[object Arguments]
LOG: routeChangeStart[object Arguments]
LOG: routeChangeSuccess[object Arguments]
LOG: HomeCtrl Called!
答案 0 :(得分:0)
来自文档:
redirectTo – {(string|function())=} – value to update $location path with and trigger route redirection.
因此,浏览器重定向是您正在调用的函数的一部分。
而不是:
{ redirectTo: '/' }
尝试使用相同的家庭路线:
{ template: basic, controller: HomeCtrl }
我没有试过这个,因为我现在不能处理这个问题,但是如果有效的话请告诉我。