2014-10-03 38 views
10

我有一個問題,現在對於那些不能在我的Android讀取的JSON ..如何使用Ionic和AngularJS框架在Android中讀取json文件?

JSON文件是我的數據是place..it充當靜態數據庫..

我可以用我的臺式機得到它,但是,當它來到我的移動也沒有顯示..

這裏是我的示例代碼:

這裏是我的服務讓我的JSON文件..

var serviceUrl = '/'; 
$http.get(serviceUrl + 'JSON/Books.json').success(function (results) { 
    $scope.New = results; 
}); 

請幫我解決這個問題..我對這個問題的想法是serviceUrl。任何關於它的想法。非常感謝你.. 我絕對是這個離子框架的初學者。

+0

當您使用Chrome遠程調試進行檢查時,您看到了什麼? – 2014-10-03 11:07:21

+0

實際上它在桌面上工作......當我將它轉換成.apk文件並在移動設備上執行時,它不再工作了..不顯示數據... – 2014-10-07 01:45:20

回答

9

對於仍然存在這個問題的所有人,我只是找到解決問題的東西。我不知道它會在你的問題解決了,但我真的解決了..我用file:///android_asset/www/作爲我的serviceUrl

因此,這是一個例子:

var serviceUrl = 'file:///android_asset/www/'; 
$http.get(serviceUrl + 'JSON/Books.json').success(function (results) { 
    $scope.New = results; 
}); 

只是嘗試,探索它..我只是去嘗試之一,它在我的工作..

可能的原因是所有的json文件在您apk安裝程序將被放置在file:///android_asset/www/json目錄中的Android手機,以便讓你的URL指向該目錄..

我希望它能幫助你並在其中探索......這可能不是正確的答案,但我希望它能幫助你找到提示。

謝謝

2

另一種簡單的方法就是把你的JSON文件轉換成JavaScript文件(靜態文件,如果你想更新使用類似pouchdb)。

如保存JSON文件作爲myjsondata.js

var mynamespace = mynamespace || {}; 
mynamespace.data = [{"foo":"bar"}]; 

然後引用JavaScript文件中,你在這裏裝載其他所有js文件主頁

<script src="js/myjsondata.js"></script> 

那麼你的服務,你可以只需使用mynamespave.data訪問json

6

使用'/'開始serviceUrl使其成爲絕對URL。它將以chrome工作,因爲root是www文件夾。但在科爾多瓦移動環境中,它將轉換爲file:///。 只需添加一個'.'('./')以使其成爲相對路徑,並且它可以在android和ios環境中使用。

2

基於@Datz Me的回答,我發現如果您將您的應用程序視爲Web服務器(它是)並且請求您的文件由它服務而不是嘗試弄清楚如何管理幾個版本之間的不同文件路徑。

這是我做的。

我已經把我的JSON文件上

www/json/app.json 

它裏面我已經把

{ 
    "title": "Application Title", 
    "icon" : "custom-icon.png" 
} 

而且在我的應用程序控制器我用下面的代碼讀取性能:

$http.get('json/app.json').success(function (results) { 
    $rootScope.title = results.title; 
    $rootScope.icon = results.icon; 
}); 

而在我所有的孩子控制器中,我只需要添加$ rootScope作爲依賴項,我就可以使用

{{title}} //on headings 
{{icon}} //to display the image path 
<img src="{{icon}}"/> //to display the icon 

對我來說,它是將被定製爲多個客戶端應用程序,所以我需要一種方法來快速改變應用程序的性能,並讓他們在一個地方。