gpt4 book ai didi

javascript - 如何更改 Angular.js 中 $resource 返回的数据?

转载 作者:行者123 更新时间:2023-12-02 22:28:07 24 4
gpt4 key购买 nike

我正在使用返回以下格式的 JSON 数据的 API:

{
paging: {
previous: null,
next: null
},
data: [
{ title: 'First Item' },
{ title: 'Second Item' },
...
]
}

我正在使用 Angular 的 $resource获取此数据的服务。
我的代码 - 位于 Controller 中 - 如下所示:

var Entity = $resource('/api/entities');
var entities = $scope.entities = Entity.get();

然后,在 View 中,我可以像这样显示数据:

<ul>
<li ng-repeat="entity in entities.data">{{entity.title}}</<li>
</ul>

一切正常,但是:

  • 我宁愿只向 View 公开 entities.data 的内容,而不是整个 entities 对象。如何拦截 GET 请求返回的数据,并在填充 $scope.entities 之前对其进行修改?
  • 相关问题:由于我正在获取数据的数组,因此使用 Entity.query() 而不是 Entity.get() 会更干净。但是,如果我在上面的代码中使用 Entity.query(),则会收到错误“TypeError: Object # has no method 'push'”。这是有道理的,因为 API 返回一个对象而不是数组(因此,该对象上没有“push”方法)。同样,如果我可以从响应中提取 .data 属性,我就会得到一个数组。

已关注 these indications作者:Dan Boyon,我设法自定义默认的 $resource 服务并覆盖 .get() 或 .query() 方法,但我不确定从哪里开始。

最佳答案

我认为您不需要修改获取或查询默认值。只需使用成功回调即可完成您想要的操作。它也应该更强大。

Entity.get(
{}, //params
function (data) { //success
$scope.entities = data.data;
},
function (data) { //failure
//error handling goes here
});

Html 也会更加清晰:

 <ul>
<li ng-repeat="entity in entities">{{entity.title}}</<li>
</ul>

顺便说一句,我通常为我的资源声明服务,然后根据需要将它们注入(inject)到我的 Controller 中。

 myServices.factory('Entity', ['$resource', function ($resource) {
return $resource('/api/entities', {}, {
});
}]);

关于javascript - 如何更改 Angular.js 中 $resource 返回的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com