如果我不包含$ urlRouterProvider.otherwise('/'),则不会发生路由;在配置中。
我的应用程序引擎设置与大猩猩是
r := mux.NewRouter()
r.HandleFunc(/admin, handleAdmin)
和angularjs config是;
angular.module('admin')
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider.state('home', {
url: '/',
templateUrl: '/admin/index.html',
controller: 'AdminController as admin'
});
//$urlRouterProvider.otherwise('/');
})
当我不调用$ urlRouterProvider.othwerwise行时,我打开http://localhost:8080/admin我希望看到admin / index.html,但我没有。只有当我手动导航到http://localhost:8080/admin#/时才会看到它。 但是,如果我添加$ urlRouterProvider.othwerwise选项并转到http://localhost:8080/admin,它会自动重定向到http://localhost:8080/admin#/ 我不认为这是通常的做法,因为我可能希望“否则”路由到自定义404页面。我错过了什么点?
答案 0 :(得分:0)
默认情况下,Angular会在网址前添加 hashPrefix 。因此,当您导航到http://localhost:8080/admin
时,您还没有看到index.html,因为您还没有访问过角度路由器中定义的网址。您必须导航到http://localhost:8080/admin/#/
以确保处于应用程序的/
状态。
这与您的应用在没有.otherwise()
的情况下无法正常工作的原因相同,因为之后它会自动将您重定向到/
状态。
可能的解决方法:
在.config
功能中:
// This is in your app module config.
$locationProvider.html5Mode(true);
在您的index.html
:
// This is in your index.html head.
<base href="/" />
答案 1 :(得分:0)
问题不在于没有声明otherwise
。
问题出在您的路线上。您已将网址指定为'/'
,这意味着状态主页只能通过 http://localhost:8080/admin/ 访问,而不能通过访问http://localhost:8080/admin 强>
otherwise
的作用是什么。当您访问网址 http://localhost:8080/admin 时,路由器会尝试查找与该网址匹配的状态,但无法找到该网址。因此,它会重定向到与您的主页状态匹配的 http://localhost:8080/admin/ 。