Angular $ http.get () не работает в PhoneGap DevApp

0

Для моего приложения Phonegap я пытаюсь загрузить файл JSON с помощью углов $ http.

Я получил эту услугу:

cApp.factory('language', function ($http) {
    return {
        getLanguageData: function () {
            return $http.get('../../lang/' + lang.substr(0,2) + '.json');
        }
    }
});

Что я использую в этом контроллере:

cApp.controller('initController', function ($scope, language) {   
    language.getLanguageData().success(function (data) {        
        $scope.language = data;
    }).catch(function (e) {
        alert("error" + e);
    });
});

Это отлично работает в моем браузере, но не в Phonegap Developerapp на Android. Контроллер не записывает language переменные и ничего не предупреждает (даже "ошибка").

Что я пробовал:

С .catch().then().catch() она вернула мне данные, которые были null в последнем .catch().

Я знаю, если это проблема с перекрестным происхождением, но мой белый список разрешений позволяет всем доменам (<access origin="*"/>).

В любом случае файлы должны быть в одном домене, так как моя структура папок выглядит так:

.myapp
├── www
|   ├── js
|   |   ├── controller
|   |   |   └── initController.js
|   |   └── service
|   |       └── language.js
|   └── lang
|       ├── en.json
|       └── de.json
└── config.xml

Что я делаю неправильно, пропал?

ОБНОВЛЕНИЕ: найдено частичное решение:

Он работает, если я выполняю get() используя весь путь:

return $http.get('file:///data/data/com.adobe.phonegap.app/files/phonegapdevapp/www/json/lang/' + lang.substr(0,2) + '.json');

Это не правильное решение, так как оно не будет работать на iOS (по другому пути). Я не понимаю, почему я не могу использовать ../../lang/.

  • 0
    Я думаю, что вы, вероятно, неверный относительный путь. Может быть, вы поднимаетесь на слишком много уровней, и версия браузера попадает в корневую папку и игнорирует .. но приложение phonegap заходит слишком далеко. Вероятно, вы должны использовать '/lang/' в качестве пути.
  • 0
    Я пытался, но это не сработало. Мой контроллер JS находится в этой папке в приложении: «файл: ///data/data/com.adobe.phonegap.app/files/phonegapdevapp/www/js/controller/», поэтому я думаю, что путь может быть в порядке
Теги:
cordova
phonegap-plugins

1 ответ

0

Вы должны просто обрабатывать его как файл, используя файл-api для приложений cordova.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню