带有Phonegap和AngularJS的HTML5模式

我试图使AngularJS html5模式(true)与Phonegap一起使用。 我之前做了很多search,我尝试了不同的configuration组合,在meta中添加<base />标签(也尝试过使用<base href =“”/>,<base href =“/”/> <base href =“/”target =“_ self”/>),添加.html后缀以路由端点,在.config块中添加$ delegate.history = false(如下)

$provide.decorator('$sniffer', function($delegate) { $delegate.history = false; return $delegate; }); 

显然

 $locationProvider.hashPrefix('!'); $locationProvider.html5Mode(true); 

但没有办法使其工作,添加标签和HTML5Mode设置为true将导致应用程序启动时的空白屏幕。 另外添加其中一个会带来相同的结果,黑屏。

添加基地标签与“android_asset”就像下面

将正确加载主控制器,但然后中断路由….

testing目标属性“_blank”和“_self”的值…

所以我的问题是,可以使用Phonegap和AngularJS启用html5模式?

我正在使用Cordova版本3.4.1-0.1.0和AngularJS 1.2.16,在Android 4.0.4真实设备和Android AVD 4.4.2上testing

任何build议将非常感激! 谢谢

Solutions Collecting From Web of "带有Phonegap和AngularJS的HTML5模式"

根据我的经验和Raymond Camden(在PhoneGap上工作)的评论 ,不可能在PhoneGap + Angular中使用html5mode。

为了解决现有网站的这个问题,我在构build时添加了一个angularjs常量,指出构build是否用于phonegap。 在configuration的时候,你可以访问常量,并select应用html5mode。

 //Add this portion via your build scripts eg grunt or gulp //make the constant change depending on if this is a Phonegap build or not angular.module('myAppConstants', []).constant('PhonegapConstant', true); //How to use angular.module('myApp', ['myAppConstants']).config(function( $locationProvider, PhonegapConstant ) { if(!PhonegapConstant) { $locationProvider.html5mode(true); $locationProvider.hashPrefix('!'); } }); 

我刚刚得到了这个与angularjs 1.5,新的组件路由器和cordova(phonegap)6.0的工作。

这有点哈克,但这是我必须做的:

  1. 从你的html文件中删除<base href="/">标签。
  2. 设置html5模式,同时设置requireBase为false

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

  1. 赶上cordova(phonegap)路线

     // iOS Cordova catcher // { path: '/var/**', component: 'cordova' }, // Android Cordova catcher // { path: '/android_asset/www/index.html', component: 'cordova' } 
  2. 做一个cordova组件,然后重新路由到任何你喜欢的地方。

      if(cookieService.loggedIn()) { $rootRouter.navigate(['Newsfeed']); } else { $rootRouter.navigate(['Title']); } 

现在你可以正常使用其余的路线。 虽然我确实遇到了这个方法的一个问题,但是我所有的本地图像和SVG都需要以android的完整path/ android_asset / www / images开始,所以我做了一个小小的filter, web,android和ios。