【问题标题】:angularjs view loads only on hard refresh and not on redirectangularjs 视图仅在硬刷新时加载,而不在重定向时加载
【发布时间】:2015-07-30 15:16:08
【问题描述】:

我正在开发我的 Angular 应用程序并设置了这样的路线

angular.module('app', ['ngRoute']) .config(函数 ($routeProvider, $locationProvider) { $routeProvider.when('/', { 模板 : ””, 控制器:功能($窗口){ $window.location.href = '/'; } }).when('/test', { 重定向到:'/测试/仪表板' }).when('/test/dashboard', { templateUrl : '../partials/dashboard.html', 控制器:“仪表板控制器” }).when('/test/unit', { templateUrl : '../partials/unit.html', 控制器:'unitController' }); $locationProvider.html5Mode(true); });

HTML 是

<body ng-app="app">
    ...
    <div id="sidebar-wrapper" class="fill-height sidebar-nav">
      <ul class="tabRow nav nav-stacked">

        <li ng-class="{active: isActive('dashboard') }"><a id="dashboardLink" ng-href="#test/dashboard">Dashboard</a>
        </li>

        <li ng-class="{active: isActive('unit') }"><a id="unitLink" ng-href="#test/unit">Unit</a>
        </li>
      </ul>
    </div>
    ...
</body>

问题:

当我输入“/test”时,此代码会将 URL 重定向到“/test/dashboard”,但该页面的 html 不显示。但是,当我使用该路由刷新页面时,它会在页面的内容区域中显示 html。

当我在链接之间切换时,仪表板会显示,只是在第一次导航到时不加载。

此外,当我将重定向更改为 /test/unit 时,它会正确重定向并显示 unit.html。

不确定是什么导致了这种行为。

任何帮助将不胜感激。

【问题讨论】:

  • DashboardController 是正确的名称吗?对于另一个控制器,您正在使用小写字母,例如第一个单词unitController。 js控制台有没有报错?
  • 我不认为这个问题与控制器的名称有关,我确定了这一点。没有js控制台错误。

标签: html angularjs routes


【解决方案1】:

如果你删除它会起作用 -

$locationProvider.html5Mode(true);

或者,您可以添加类似的 question's 答案 -

<base href="/" />

致您的&lt;head /&gt;

【讨论】:

    【解决方案2】:

    我认为您需要在为 $locationProvider 配置 html5Mode 时指定 requireBase: false

    $locationProvider.html5Mode({
      enabled: true,
      requireBase: false
    });
    

    这是一个有效的plnkr demo

    有关与您的部署相关的更多上下文,您应该了解this form angular docs

    【讨论】:

    • 感谢演示,我尝试添加代码,但仍然有相同的行为。
    • 为了添加更多上下文,仪表板使用 js 库 highchart 来表示一些数据。你认为它可能没有按时加载吗?好吧,我什至尝试移动库文件以便它首先加载但没有运气。
    • 您是否尝试过使用像 &lt;div&gt;{{DashboardController.message}} 这样的单个 div 的简单 dashboard.html 并在您的控制器中初始化此消息 DashboardController.message = "some test msg"
    • 我尝试了一个简单的仪表板,其中只有一条消息,并且仅在我刷新页面时才会显示,但在第一次发生重定向时不显示。
    • 你可以尝试通过在上面的配置中设置enabled: false来禁用html5Mode吗?您还如何访问 /test url?应该是http://whateveryourdomain/#/test
    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 2019-04-05
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多