angularjs 科尔多瓦基础 href

angularjs cordova base href

尝试为 angularjs html5 网络应用程序设置正确的 base href 值以在 cordova

中工作

最初使用 $locationProvider.html5Mode(true)<base href="/">

尝试了一些在 SO 和 ui-router FAQs:

上浮动的替代方案

<base href="."> 使用 html5 模式根据 this 答案:

<base href="./"> 与 html5 模式:

没有 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);
}]);

有关信息: 使用 this method 的替代 cordova deviceready vs angular.element bootstrap 分别用于 cordova / 浏览器

好的,让这个工作的方法是删除基本 href AND 禁用 html5 模式:

  • [可选] 创建并签出一个名为 dev-cordova 或类似的新分支
    • 这允许您在浏览器和设备代码之间快速切换
  • 删除/评论主<base href="/"> index.html
  • 确保html5模式在app.js中被禁用

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

    $locationProvider.html5Mode(false);
    

不要忘记 运行 cordova build ios(在你 g运行t / gulp 等编译 js 文件之后)
...这确保更新 cordova /platforms/ios/www 目录中的文件。