当浏览器刷新(Chrome)时,Angular应用会丢失样式和javascript

Angular application loses styling and javascript when browser refreshed (Chrome)

本文关键字:应用 样式 javascript Angular 刷新 浏览器 Chrome      更新时间:2023-09-26

我正在做我的第一个Angular.js应用程序,它工作得很好,但是我一直有两个刷新浏览器的问题。我已经附上了一个链接到一个显示问题的视频。这两个问题是:

  1. 当我点击刷新按钮或ctrl-f5,页面失去了所有的CSS样式。
  2. 当我点击"日历"链接返回主页时,像用户名这样的东西在不应该显示的时候显示出来。看一下这里的截屏:截屏出现问题

这是我的路由:

'use strict';
var JBenchApp = angular.module('JBenchApp', [
    'ngRoute'
]);
JBenchApp.config(['$routeProvider', '$locationProvider',
  function ($routeProvider, $locationProvider) {
      $routeProvider.
        when('/dashboard', {
            templateUrl: 'partials/dashboard.html',
            controller: 'JBenchCtrl'
        }).
        when('/calendar', {
            templateUrl: 'partials/calendar.html',
            controller: 'JBenchCtrl'
        }).
        when('/', {
            templateUrl: 'partials/calendar.html',
            controller: 'JBenchCtrl'
        }).
        when('/documents/:number', {
            templateUrl: 'partials/documents.html',
            controller: 'CaseDetailCtrl'
        }).
        when('/parties/:number', {
              templateUrl: 'partials/parties.html',
              controller: 'CaseDetailCtrl'
        }).
        otherwise({
            redirectTo: '/calendar'
        });
      $locationProvider.html5Mode(true);
  }]);

编辑添加web。配置文件部分:

<rewrite>
    <rules>
      <rule name="Main Rule" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/index.html" />
      </rule>
    </rules>
            <rewriteMaps>
                <rewriteMap name="/JWB/" />
            </rewriteMaps>
  </rewrite>

有什么办法可以解决这个问题吗?

这是因为浏览器,你现在请求一个页面在/some/path/,如果你有任何相对的url在你的资产路径,浏览器将寻找他们在/some/path/js/foo.js而不是/js/foo.js

有几种方法可以解决这个问题,但是,最简单的可能是使用绝对路径。
src="/js/foo.js"

然而,有时由于将应用程序托管在域的子文件夹中,这将无法工作。在这种情况下,基本标记可能更合适。

<base href="/subfolder/">