我是AngularJS的新手。试图通过$ resource从JSON数组中获取特定元素。 JSON文件staffs.json的结构如下:
[{
"id": 0,
"facility_id": [0],
"name": "Tim",
"role_id": 0
},
{
"id": 1,
"facility_id": [0],
"name": "Duncan",
"role_id": 0
},
{
"id": 2,
"facility_id": [0],
"name": "Tony",
"role_id": 1
},
{
"id": 3,
"facility_id": [0],
"name": "Parker",
"role_id": 1
},
{
"id": 4,
"facility_id": [0],
"name": "Manu",
"role_id": 2
},
{
"id": 5,
"facility_id": [0],
"name": "Ginobili",
"role_id": 2
},
{
"id": 6,
"facility_id": [0],
"name": "Tiago",
"role_id": 3
},
{
"id": 7,
"facility_id": [0],
"name": "Splitter",
"role_id": 3
}]
我想找一个名字叫" Tiago"的员工。 代码是:
var url = 'data/staffs.json';
var username = 'Tiago';
users = $resource(url);
users.get({name: username}, function(data){
alert(data.name);
});
似乎get()内的alert()函数永远不会被调用。但是,如果我将方法从users.get()更改为users.query(),它可以获取人员列表。我想这是因为JSON文件中的数据是一个数组,所以用于获取数组的query()工作,而get()不起作用,因为它不适用于数组操作。我对么?
我只是想知道是否必须使用query()获取整个数组并逐个匹配元素,直到找到具有相同名称的元素,或者有一些更简单的方法来获取我想要的元素。 / p>
谢谢
答案 0 :(得分:2)
AngularJS资源具有单独的查询功能,以避免数组的JSONP漏洞。您有两种选择:
我投票支持选项二,因为您不必通过线路发送所有内容,而是使用服务器(DB)来获取特定用户。服务器软件针对此进行了优化。
答案 1 :(得分:1)
您最好的选择是使用query()
方法获取数据,然后使用indexOf()
var url = 'data/staffs.json';
var username = 'Tiago';
users = $resource(url);
users.get({name: username}, function(data){
dataOfMyUser = data.map(function(cur) { return cur.name }).indexOf(username);
alert(dataofMyUser);
});