Angular nsResource为REST字符串数组创建一个char数组数组

con*_*ept 9 angularjs

我有一个Web服务控制器,提供"活动"数据

GET /api/activity/list
GET /api/activity/1
GET /api/activity/activity-slug-name
PUT /api/activity
DELETE /api/activity/1
Run Code Online (Sandbox Code Playgroud)

它还提供了一些"元"数据

GET /api/activity/meta/dates
GET /api/activity/meta/states
Run Code Online (Sandbox Code Playgroud)

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

它返回一个字符串数组

[
    "2013-06-02T17:05:16Z",
    "2013-06-07T17:05:16Z",
    "2013-08-17T17:05:16Z"
]
Run Code Online (Sandbox Code Playgroud)

ngResource将其转换为char数组数组,请参阅:ngResource请求与字符串数组的结果无效

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

我的问题是

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

或者我应该使用棱角分裂?

提前致谢

*更新*

感谢Mark的评论.如果你把它作为答案我会接受它,因为它指向Angular中的一个错误,而另外两个答案不适合当前的架构.

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

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

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

小智 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;
  }
Run Code Online (Sandbox Code Playgroud)

}