Для моего приложения 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/
.
Вы должны просто обрабатывать его как файл, используя файл-api для приложений cordova.
..
но приложение phonegap заходит слишком далеко. Вероятно, вы должны использовать'/lang/'
в качестве пути.