尝试base href
为 angularjs html5 Web 应用程序设置正确的值以在科尔多瓦工作
最初使用$locationProvider.html5Mode(true)
with <base href="/">
:
- 应用程序在普通浏览器中完美运行
- cordova 为 css / js / 模板等提供资源错误
(我相信它会在 cordova 根目录而不是平台根目录中查找资源?)
在 SO 和 ui-router FAQs上尝试了一些替代方案:
<base href=".">
按照这个答案使用html5模式:
- 在科尔多瓦发现资产正常(无资源错误)
- ui-router 进入无限循环的尾部旋转,并出现以下错误消息
Error: Failed to execute 'pushState' on 'History': A history state object with URL 'https://page/' cannot be created in a document with origin https://example.com
<base href="./">
使用 html5 模式:
- 在科尔多瓦找到的资产(没有资源错误)
- 给了我使用此处提到的frankwallis 解决方案尝试的可怕
Error: 10 $digest() iterations reached. Aborting!
消息,但这没有帮助(同样的错误)
没有base href
_$locationProvider.html5Mode({enabled: true, requireBase: false});
- 在科尔多瓦找到的资产(没有资源错误)
- 页面开始在自己内部加载??...在某些州两次像角引导?
我的应用配置定义如下所示:
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);
}]);
有关信息:分别为cordova/浏览器使用这种替代cordova deviceready
vs angular.element bootstrap的方法