1

我在 AgularJS 中有一个简单的应用程序。我需要在路线中加载视图

$routeProvider.when('/articles/:url', {
  templateUrl: 'partials/article.html',
  controller: ArticleCtrl
});

但是,如果我单击页面重新加载并在重新加载 Angular 后尝试加载 partials/article.html 视图,但因错误“ NetworkError: 404 Not Found - http://localhost:3000/clanky/partials/article.html“我知道我可以使用“../partials/article.html” insted“partials/article.html”而失败",但我的意思是这不是问题的核心。

有我的路线:

blog.config([
  '$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider.when('/', {
      templateUrl: 'partials/main.html',
      controller: MainCtrl
    });
    $routeProvider.when('/login', {
      templateUrl: 'partials/login.html',
      controller: LoginCtrl
    });
    $routeProvider.when('/backend', {
      templateUrl: 'partials/backend.html',
      controller: BackendCtrl
    });
    $routeProvider.when('/articles/:url', {
      templateUrl: 'partials/article.html',
      controller: ArticleCtrl
    });
    return $routeProvider.otherwise({
      redirectTo: '/'
    });
  }
]);

PS如果我尝试去任何其他路线,例如,登录,它部分工作,但重新加载仍然在这里。

谢谢你的回答

4

2 回答 2

0

看来我遇到了和你一样的问题。

我不知道如何处理这个问题,但我认为那是因为页面被重新加载了。

当您未设置html5Modetotrue时,将#在 url 处,如果您重新加载页面,#则将跟踪信息以$scope使用htmlHistoryapi,以便即使页面刷新,应用程序也可以正常工作。

但是一旦设置html5Modetrue,就没有#存储任何$scope信息,当页面重新加载时,angular 找不到相应的范围,所以它返回404

您可以查看angularjs guide 上的 $location 部分,它有一个部分解释了为什么会发生这种情况。

页面重新加载导航

$location 服务只允许您更改 URL;它不允许您重新加载页面。当您需要更改 URL 并重新加载页面或导航到不同的页面时,请使用较低级别的 API,$window.location.href。

希望这对您有所帮助,如果您有更好的答案,请告诉我,我也在等待正确的方法来解决它。

于 2013-07-16T01:18:58.610 回答
-1

以斜杠开头你的 templateUrl:

templateUrl: '/partials/article.html'

代替

templateUrl: 'partials/article.html'

于 2013-09-12T08:52:05.923 回答