我已经以这种方式配置$routeProvider
miNgAppplication.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "Base/FirstPage",
controller: "miNgControllerFirstPage"
})
}]);
当我插入带有最终斜杠的网址时,这会有效,例如" http://localhost/myApp/"。它增加了URl a"#/"并显示正确的内容(最终网址为" http://localhost/myApp/#/")
当我不使用斜线时,它不起作用,基本上是因为它错误地更改了URL
" http://localhost/myApp" - > " http://localhost/myApp#/"
我该怎么办?我是否错误地使用了第一个when
参数来定义第一页?或者我需要做一些修正吗?
我已经尝试添加$urlMatcherFactoryProvider.strictMode(true);
但它无效(不确定我是否正确,第一行变为miNgAppplication.config(['$routeProvider', '$urlMatcherFactoryProvider', function ($routeProvider, $urlMatcherFactoryProvider) {
,对吧?)。
答案 0 :(得分:1)
当没有匹配时,使用otherwise方法设置默认网址。
miNgAppplication.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "Base/FirstPage",
controller: "miNgControllerFirstPage"
});
$routeProvider.otherwise('/'); // <-- this should take the user to the first page.
}]);
答案 1 :(得分:0)
我找不到合适的解决方案。我希望有人可以给我一个提示,同时我解决了这个(丑陋的)方式。基本上我会听$ route事件并在必要时重定向。
miNgAppplication.run(function ($rootScope) {
$rootScope.$on("$routeChangeError", function (event, next, current) {
if (miLib.endsWith(window.location.href, "#/") && !miLib.endsWith(window.location.href, "/#/")) {
event.preventDefault();
var newLink = window.location.href.substr(0, window.location.href.lastIndexOf("#/")) + "/#/";
console.clear();
window.location.href = newLink;
}
});
});