最初使用$locationProvider.html5Mode(true)和< base href =“/”>:
> app在普通浏览器中完美运行
> cordova为css / js / templates等提供资源错误
(我相信它在cordova根目录中寻找资源而不是平台根目录?)
在SO和ui-router FAQs上尝试了一些替代方案:
< base href =“.”>使用html5模式,根据this答案:
>资产在cordova中找到了(没有资源错误)
> ui-router进入带有无限循环的尾部旋转和以下错误消息
错误:无法在“历史记录”上执行“pushState”:无法在具有源https://example.com的文档中创建URL为“https:// page /”的历史状态对象
< base href =“./”>使用html5模式:
>在cordova中找到的资产(没有资源错误)
>给了我可怕的错误:达到10 $digest()迭代.中止!信息
尝试使用frankwallis solution提到的here,但没有帮助(相同的错误)
$locationProvider.html5Mode没有基础href({enabled:true,requireBase:false});
>在cordova中找到的资产(没有资源错误)
>页面开始加载自己? …在某些州有两次角度引导?
我的app配置定义如下:
myApp.config(['$locationProvider','$urlRouterProvider','$stateProvider','$stickyStateProvider',function($locationProvider,$urlRouterProvider,$stateProvider,$stickyStateProvider) { $locationProvider.html5Mode(true); $stateProvider .state('root',{ // we define a 'root' state so that we can load some essential data prior to any template being loaded url: '',abstract: true,sticky: true,views: { 'root': { template: '<ui-view/>',} } }) .state('root.worldmap',{ url : '/worldmap',templateUrl : 'templates/worldmap.tmpl.html' }) .state('root.faq',{ url : '/faq',templateUrl : 'templates/faq.tmpl.html' }) .state("otherwise",{ url: "*path",views: { 'root': { template: "",controller: ['$injector',function($injector) { var $state = $injector.get("$state"); $state.go('root.worldmap'); }] } },}); $stickyStateProvider.enableDebug(true); }]);
有关信息:
使用this method替代cordova deviceready和angular.element bootstrap分别为cordova /浏览器
> [可选]创建&结帐一个名为dev-cordova或类似的新分支
>删除/评论< base href =“/”>在主index.html
>确保在app.js中禁用html5模式
$locationProvider.html5Mode({ enabled: false,requireBase: false });
要么
$locationProvider.html5Mode(false);
不要忘记运行cordova build ios(在你grunt / gulp等之后编译js文件)…这可确保更新cordova / platforms / ios / www目录中的文件.