angular-ui-router将视图呈现两次&我无法手动访问网页

时间:2015-12-19 20:12:55

标签: angularjs express angular-ui-router

我使用的是Angular 1.5.0,angular-ui-router和Express.js。

我有两个不同的问题,我相信它们是由同一个问题引起的,但我无法解决。

当我将html5Mode设置为true时,就会发生这种情况。以下是我的表现方式。

.config(
  ['$stateProvider', '$urlRouterProvider', '$locationProvider',
    function($stateProvider, $urlRouterProvider, $locationProvider) {

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

Express.js代码,可以手动访问网址

app.all('*', function(req, res){
    res.sendFile(__dirname + '/public/index.html');
});

1-)如果我尝试访问http://localhost/contactshttp://localhost/about,我就能做到。但是,如果我尝试http://localhost/contacts/1http://localhost/contacts/1/item/a,我会得到如下页面。

enter image description here

2-)如果我点击通讯录> Alice(或任何其他)>电话号码(或任何其他列表项),我得到了导航栏的副本。如下所示。

enter image description here

我如何解决它,更重要的是,导致这种情况的原因是什么?

编辑:如果我将.html文件更改为绝对网址(如/contacts.list.html),它运行良好(问题2已解决)但我仍然无法手动访问网址,它尝试获取错误的css / js文件。

这是输出(终端)。我还在Chrome开发者工具上看到每个.js文件出现Uncaught SyntaxError: Unexpected token <错误,因此存在问题。

GET /contacts/1/item/a 304 0.798 ms - -
GET /contacts/1/item/bootstrap.min.css 304 1.828 ms - -
GET /contacts/1/item/styles.css 304 1.798 ms - -
GET /contacts/1/item/angular/angular-ui-router.js 304 4.444 ms - -
GET /contacts/1/item/app.js 304 5.266 ms - -
GET /contacts/1/item/contacts.js 304 7.612 ms - -
GET /contacts/1/item/contacts-service.js 304 7.744 ms - -
GET /contacts/1/item/utils-service.js 304 2.413 ms - -
GET /favicon.ico 304 0.516 ms - -

编辑2:如果我将js和css路径改为绝对路径,我也可以手动访问http://localhost/contacts/1/item/a之类的网址,但我不想这样做。我喜欢使用相对网址。

这是我的插曲。 (这是ui-router团队提供的示例应用程序,我在app.js和contacts.js中注释了html5部分,因为plnkr不提供服务器端渲染)

http://plnkr.co/edit/zm8v8VYSGzLbOzfcCB6O?p=preview

我尽量保持清晰,如果您希望我添加额外的内容,请随时添加评论。

0 个答案:

没有答案