0
對於我PhoneGap的應用程序,我試圖加載使用angulars $ HTTP一個JSON文件不PhoneGap的DevApp工作。
我得到這個服務:
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()
鏈,它返回我數據,在過去的.catch()
是null
。
我因子評分有關,如果它是一個跨起源問題,但我的PhoneGap白名單允許所有的域(<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/
。
我想你可能有錯誤的相對路徑。也許你的水平太高了,瀏覽器版本碰到了根文件夾,並且忽略了'..',但phonegap應用程序太過分了。可能你應該使用'/ lang /'作爲路徑。 – Duncan
我試過了,但它並沒有做到這一點。我控制器JS是在應用此文件夾中:'file:///data/data/com.adobe.phonegap.app/files/phonegapdevapp/www/js/controller/'所以我覺得,路徑可能被罰款 –