猿问

没有 urlRouterProvider 的 ui 路由。否则

如果我不包含 $urlRouterProvider.otherwise('/'); 则不会发生路由。在配置中。


我的 go 应用引擎设置与 gorilla 是


r := mux.NewRouter()

r.HandleFunc(/admin, handleAdmin)

和 angularjs 配置是;


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 页面。我错过了什么?


回首忆惘然
浏览 181回答 2
2回答

慕的地8271018

默认情况下,Angular 会在url前面添加hashPrefix。因此,当您导航到 时http://localhost:8080/admin,您不会看到 index.html,因为您尚未访问 angular 的 ui-router 中定义的 url。您必须导航到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="/" />

Smart猫小萌

问题不在于没有声明otherwise.问题出在你的路线上。您将 url 指定为'/',这意味着只能通过http://localhost:8080/admin/而不是通过http://localhost:8080/admin访问状态主页它的otherwise作用是什么。当您访问 url&nbsp;http://localhost:8080/admin 时,路由器会尝试找到与该 url 匹配的状态,但没有找到。因此它重定向到与您的家乡状态匹配的http://localhost:8080/admin/。
随时随地看视频慕课网APP

相关分类

Go
我要回答