无法使用templateUrl加载cordova中的外部模板

时间:2016-03-15 20:55:55

标签: angularjs cordova windows-8.1 cordova-win10

部署到Windows 8.1的Cordova 4.0版可以防止外部模板

        .when('/', {
            controller: 'login',
            templateUrl: 'http://ip-address/templates/login.html',
            resolve: resolver('login')
        })

注意: 这不是InAppBrowser应用程序。 index.html是本地的,router.js也是本地的 config.xml有

<access origin="*" />

因此不应出现任何跨域问题。

2 个答案:

答案 0 :(得分:1)

我不知道这是否有帮助,所以我只是评论(见问题评论)。我在我的index.html文件中有这个,而我需要访问templates.com上的模板(作为示例):

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net http://localhost:1337 http://ajax.aspnetcdn.com">

答案 1 :(得分:0)

潜在问题似乎是Cross Origin Issue,但通过以下解决方法解决了这个问题。基本理论是$ http.get能够解析text / html或application / json。

app.run(....)

            var allTemplates = [
                'my-template-1.html',
                'login-template.html',
                'logout-template.html',
                'unsupportedversion.html'
            ];

            allTemplates.forEach(function(template){
                $http.get('http://example.com/templates/'+template).success(function (t) {
                    $templateCache.put('templates/'+template, t);
                }).error(function(data, status, headers, config) {
                    $rootScope.appErrors.push(template+' failedToLoad');
                });
            });