2016-01-06 87 views
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/

+0

我想你可能有錯誤的相對路徑。也許你的水平太高了,瀏覽器版本碰到了根文件夾,並且忽略了'..',但phonegap應用程序太過分了。可能你應該使用'/ lang /'作爲路徑。 – Duncan

+0

我試過了,但它並沒有做到這一點。我控制器JS是在應用此文件夾中:'file:///data/data/com.adobe.phonegap.app/files/phonegapdevapp/www/js/controller/'所以我覺得,路徑可能被罰款 –

回答