我是Angularjs的新人并且有所怀疑。我正在使用$ resource以这种方式使用Rest Web Service:
providersApp.factory('providersSrvc', function ($resource) {
return {
getData: function () {
return $resource('http://devfz.azurewebsites.net/api/providers', {}, {
query: { method: 'GET' }
});
}
}
});
这是我的控制器:
providersApp.controller('ProvidersController',
function ProvidersController($scope, providersSrvc) {
$scope.providers = providersSrvc.getData().query();
});
这个Rest URL返回一个JSON对象,里面有一个数组(如果我错了,请纠正我):
{"$id":"1","$values":[{"$id":"2","Id":1,"Name":"Diagnose","Category":null,"Address":null,"Services":null},{"$id":"3","Id":2,"Name":"Hospital São lucas","Category":null,"Address":null,"Services":null},{"$id":"4","Id":3,"Name":"Hospital Primavera","Category":null,"Address":null,"Services":null}]}
我找到了一种方法来迭代它:
provider in providers.$values
我的问题是:这被认为是迭代它的好方法吗?我在互联网上找到的所有例子似乎都返回JSON数组,而不是像我一样在JSON对象中的数组。我的Restful JSON返回有什么问题吗?有没有更好的方法来做这一切?
非常感谢您的帮助!
答案 0 :(得分:1)
您的退货或代码没有错。我怀疑服务中的$id
值对于实际的提供者内容数组是否有用,所以我建议给数组提供自己的范围变量,以便从模板访问它更清晰。如果你必须做清理或其他任何事情,你也可以在回调中做到这一点。
<强> foo.js 强>
providersApp.controller('ProvidersController',
function ProvidersController($scope, providersSrvc) {
$scope.providers = providersSrvc.getData().query().then(function(data) {
return data.$values.filter(function (provider) {
return (provider.Category === null);
}
}
});
<强> foo.html 强>
<ul>
<li ng-repeat="provider in providers">
{{provider.Name}}
{{provider.Diagnose}}
{{provider.Category}}
{{provider.Address}}
{{provider.Services}}
</li>
</ul>
作为PS:"provider"是Angular中的一个概念,因此可能想要考虑将您的域语重命名为“Hospitals”或“CareProvider”,以避免混淆:)