如何angular-resources.js
通过服务读取JSON文件?
我正在为测试目的而开发一个非常基本的Angular应用程序,并且现在只是尝试从JSON文件中读取数据。我将此代码放在服务中,以便在移动基于服务器的数据存储时可以更轻松地将其换出。
我App
和App.controller
声明如下:
'use strict';
// create module for custom directives
var App = angular.module('App', ['jsonService']);
// controller business logic
App.controller('AppCtrl', function AppCtrl($scope, JsonService) {
console.log("marker 1");
if (!$scope.jsonData) {
console.log("marker 2");
JsonService.getData(function (d) {
console.log(d);
$scope.jsonData = d;
$scope.records = d.length;
});
} else {
console.log("I have data already... " + $scope.jsonData);
}
console.log($scope.jsonData);
});
目前,我JsonService
的定义如下:
'use strict';
angular.module('jsonService', ['ngResource'])
.factory('JsonService', function($resource, $filter) {
// define the remote service using Angular's $resource module
var service = $resource('/data/ProcessModeling-Resources.json', {});
var JsonService = {
// calls $resource.query() to retrieve the remote data.
getData : function getData(callback) {
console.log("marker 3");
service.query(function (data) {
console.log("marker 4");
});
}
};
return JsonService;
});
我得到的控制台输出如下:
marker 1 app.js:8
marker 2 app.js:11
marker 3 services.js:13
undefined app.js:21
TypeError: Object #<Resource> has no method 'push'
at copy (http://127.0.0.1:8000/lib/angular.js:556:21)
at new Resource (http://127.0.0.1:8000/lib/angular-resource.js:330:9)
at http://127.0.0.1:8000/lib/angular-resource.js:386:32
at forEach (http://127.0.0.1:8000/lib/angular.js:117:20)
at http://127.0.0.1:8000/lib/angular-resource.js:385:19
at wrappedCallback (http://127.0.0.1:8000/lib/angular.js:6650:59)
at http://127.0.0.1:8000/lib/angular.js:6687:26
at Object.Scope.$eval (http://127.0.0.1:8000/lib/angular.js:7840:28)
at Object.Scope.$digest (http://127.0.0.1:8000/lib/angular.js:7707:25)
at Object.Scope.$apply (http://127.0.0.1:8000/lib/angular.js:7926:24) angular.js:5582
当我尝试调用my时收到错误消息service.query(function (data) { }
(如果我理解正确的话),这应该将我的JSON文件放入其中。
我一直使用AngularJS Cats
App
作为提取数据的示例。
我会遵循@pkozlowski的建议,并确保响应为数组。无论如何,这是一个示例,该示例从JSON文件中加载数据,类似于您在注释中描述的内容。它使用
ngResource
并可以帮助您将它们放在一起:http :
//plnkr.co/edit/Ofq7Md8udEnIhAPF1NgL?p=preview
服务
angular.module('jsonService', ['ngResource'])
.factory('JsonService', function($resource) {
return $resource('cats.json',{ }, {
getData: {method:'GET', isArray: false}
});
});
请注意,该isArray
设置为false
。
您的应用和控制器
var app = angular.module('app', ['jsonService']);
app.controller('ctrl', function($scope, JsonService){
JsonService.getData(function(data){
$scope.name = data.name;
$scope.children = data.children;
});
});
getData
实际上不需要,因为 Resource 类为您提供了一些有用的便捷方法,例如get
,您可以执行此操作
angular.module('jsonService', ['ngResource'])
.factory('JsonService', function($resource) {
return $resource('cats.json');
});
app.controller('ctrl', function($scope, JsonService){
JsonService.get(function(data){
$scope.name = data.name;
$scope.children = data.children;
});
});
问题内容: 我正在尝试读写文件,但是我想通过Resource访问该文件。 这就是我要做的 但似乎都不正确。正确的方法是什么? 问题答案: 请尝试以下方法: 要么 对于输出,请尝试以下操作:
我有一个基于service worker的离线应用程序,允许用户离线下载pdf文件。 有一个文本文件,其中包含pdf文件的下载路径和特定格式的文件标题(以及css、js和图像路径),应用程序通过ajax读取此文本文件并绘制所有可用pdf文件的列表(通过显示标题和下载链接) 在安装过程中,工作人员读取相同的文件,并将所有pdf文件与文本文件一起放入缓存中,以便这些文件可以离线访问。 当我用一些新的p
从RESTful Web服务(通过GET)获取项目集合时,每个项目的表示形式(例如在JSON中)通常包含项目的资源标识符。这可以是资源的ID,也可以是通常包含ID的整个URI。 如果客户端需要与表示单个项的远程资源进一步交互,则需要此标识符(ID或URI)。许多人似乎认为提供整个URI而不仅仅是ID是一种很好的做法,这样客户机就与URI构造无关(例如,这就是Miguel Grinberg在本文中所
我正在尝试从Qpid JMS客户端连接到Windows服务总线。身份验证和握手成功,但无法从主题或队列中获取任何信息。 我的代码基于这里提供的教程。 读取时尝试从服务总线获取消息: 服务器无法处理该请求;请重试该操作。如果问题仍然存在,请与服务总线管理员联系并提供跟踪id。。跟踪ID:583da4f8d58d4fa59dc9521c6f799cb8\U GWIN-AN5B0307EEHM,时间戳:
我有以下前缀: 有办法 在intellij中,idea工作正常,但启动jar时出现错误: JAVA尼奥。文件NoSuchFileException:文件:/app。罐子/BOOT-INF/classes/模板/请求订单/未标记/请求订单未标记。pdf
问题内容: 我有一个XML文件,需要在Android SDK中进行解析。 如何从资源中读取XML文件路径? XML包含: 问题答案: 将其放在文件夹下。然后,您可以使用以下命令打开它: 这里有一个有关如何使用的示例: http://android-er.blogspot.com/2010/04/read-xml-resources-in-android- using.html