删除url中的hashtag,刷新f5时出错(angularJs-cordova)

时间:2015-03-18 06:25:16

标签: angularjs cordova

我对angularJs中的路由器有一些疑问。我使用了angular-ui-router。但是当我在带有$ locationProvider的url中删除了#标签时,我会收到错误。如何解决这个问题?,在我的模块中:



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

    .state('locale',{
      url: '/locale',
      templateUrl: 'template/static/locale.html'
    })

    .state('callback',{
      url: '/callback',
      templateUrl: 'template/static/callback.html',
      controller: 'userCalendar'
    })

    .state('sign_in',{
      url: '/sign_in',
      templateUrl: 'template/users/sign_in.html'
    })

    .state('addprofile', {
      url: '/addprofile',
      templateUrl: 'template/users/addprofile.html'
    })

    .state('tabs',{
      url: '/tabs',
      templateUrl: 'template/pages/tabs.html'
    })

    .state('tabs.mainMenu', {
      url: '/mainMenu',
      templateUrl: 'template/pages/mainmenu.html'
    })

    .state('form',{
      url: '#/form',
      templateUrl: '/template/users/form.html'
    })
  $urlRouterProvider.otherwise('locale');
  $locationProvider.html5Mode({
    enabled: true,
    requireBase: true
  });
});




感谢您的关注

1 个答案:

答案 0 :(得分:0)

删除哈希路由后,您将遇到此刷新问题(即使没有Cordova)。我看到您已在app.js配置中使用 requireBase 进行 $ locationProvider 设置:

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

这意味着您还需要在index.html中设置基本网址

<html ng-app="myApp">
<head>
<title>AngularJS</title>
<base href="http://localhost:8888/angularjs-website-folder/">

您还需要配置服务器URL重写规则。以下是使用网站文件夹中的.htaccess文件的MAMP localhost解决方案:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /angularjs-website-folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !.*\.(css|js|html|png|jpg|jpeg|gif|txt)
    RewriteRule (.*) index.html [L]
</IfModule>

注意:第一个 RewriteBase 应该是相对链接,而index.html中的基本网址是绝对的。