无法GET - 使用Ionic

时间:2016-01-31 18:50:40

标签: javascript angularjs express ionic-framework gulp

我正在使用Ionic框架构建混合移动应用程序,我将html5Mode设置为true,Ui-Router和gulp为我提供livereload,sass编译,css和javascript缩小。

问题是每当我直接从索引导航到状态时,一切正常,请求发送到我的服务器,但是当我刷新相同的状态时,我得到了无法获取错误。

我将我的Ionic应用程序与Express.JS应用程序分开处理。

这里有一些代码:

 $stateProvider

 .state('faculties', {
    url: '/',
    templateUrl: 'views/main/main.html',
    controller: 'MainCtrl as main'
  })

  .state('faculty', {
    url: 'faculties/:faculty',
    templateUrl: 'views/faculty/faculty.html',
    controller: 'FacultyCtrl as v'
  })

所以,如果我打开页面并点击了将我带到教师队伍的按钮。国家,这一切都很好。但是,如果我刷新该页面,它会给我无法解决的错误。 以下是来自'教师的代码。国家控制员:

  app.controller('FacultyCtrl', function ($http, $stateParams, appConfig) {

  var v = this;
  var api = appConfig.api;
  v.faculty = {};

  $http.get( api + '/faculties/' + $stateParams.faculty)
  .then( res => {
    v.faculty = res.data;
  }).catch( error => {
    console.log(error);
  });

});

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您没有将所有可能的网址路由到同一个index.html

首次加载页面时,例如,网址为http://example.com/,您的网络服务器将从您的根目录提供静态文件index.html。更改路线时,您的网址最终为(例如)http://example.com/some_page。这是有效的,因为URL是"伪造",服务器上没有这样的文件。刷新(或直接转到该URL)时,从服务器请求该URL失败(因为,与以前一样,该文件/文件夹不存在)。

您需要做的是将所有请求(不包括API和whatnot)路由到同一个静态index.html,这是所有单页应用的标准行为: 路由在客户端完成。