9

我有一个提供“活动”数据的 Web 服务控制器

GET /api/activity/list
GET /api/activity/1
GET /api/activity/activity-slug-name
PUT /api/activity
DELETE /api/activity/1

它还提供一些“元”数据

GET /api/activity/meta/dates
GET /api/activity/meta/states

它们都使用 ngResource 工作得非常好,因为它们都返回 JSON 对象。但是 /api/activity/meta/dates 没有

它返回一个字符串数组

[
    "2013-06-02T17:05:16Z",
    "2013-06-07T17:05:16Z",
    "2013-08-17T17:05:16Z"
]

ngResource 将其转换为 char 数组的数组,请参阅:Invalid result from ngResource request with string array

显然我可以将元函数拆分为某种形式的 ActivityMetaService 但我更愿意将它们放在一起

我的问题是

有没有办法阻止 ngResource 执行这种过分热心的对象分解?

或者我应该用角度提出一个错误?

提前致谢

* 更新 *

感谢马克的评论。如果您将其作为答案,我会接受它,因为它指向 Angular 中的一个错误,而其他两个答案不适合当前架构。

虽然您在技术上是正确的,但自 80 年代中期以来,没有人将字符串视为字符数组,C/C++ 程序员除外 :)

我在 github 上用 angular.js 项目提出了一张票,参考下面

https://github.com/angular/angular.js/issues/2664

4

3 回答 3

2

我们您可以尝试使用 transformRequest

query: {
  method: 'GET',
  isArray: true,
  transformResponse: function (data, headers) {
    var tranformed = [];
    [].forEach.call(eval(data), function (d) {
        tranformed.push({ name: d });
    });
    return tranformed;
  }

}

于 2014-05-05T13:42:54.493 回答
1

是的!

https://github.com/klederson/ModelCore从头开始​​使用 $http 服务更容易检查一下!

于 2013-05-15T00:47:51.953 回答
1

要仅获取字符串数组,请改用$http 服务

于 2013-05-14T22:24:29.997 回答