2014-10-03 41 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 

对我来说,它是将被定制为多个客户端应用程序,所以我需要一种方法来快速改变应用程序的性能,并让他们在一个地方。