【问题标题】:angularjs $resource.query with complex structureangularjs $resource.query 结构复杂
【发布时间】:2015-04-25 01:30:12
【问题描述】:

我所有用于查询的其余 API(例如 /clubs)都返回一个具有这种形式的对象:

{
"total": 10,
"results": [...]
}

$resourece.query 需要一个数组。

解析此响应的正确方法是什么?

  • 是否应该在资源定义中覆盖查询设置isArray: false? (如果我将函数设置为覆盖 query 是否必须重新设置所有其他方法,例如 get save 等?)
  • 是否应该创建一个 parseFunction 来解析结果并返回一个数组?如果有,怎么做?
  • 如何创建我的资源,而不必为每个资源复制代码?基本上是扩展当前的$resource 对象来覆盖配置,或者解析函数。

【问题讨论】:

    标签: angularjs angularjs-resource


    【解决方案1】:

    你收到的是一个对象而不是数组,所以使用$resource.get,然后你可以从对象访问结果数组

    【讨论】:

    • 但是我应该得到一个单一的俱乐部。我将资源 url 设置为 /clubs/:Id 。实际上,我希望在两个 porpouses 的单个 get 函数中使用两个不同的调用而不是 ha。
    • 如果您可以更改 API 返回的内容,那么您应该将其更改为只是一个数组,而不是包装在对象中的数组。如果您无法更改 API 返回给您的内容,那么您将不得不添加一个新方法来处理查询或覆盖 $resource.query。这样的工作量更大。
    • 但是无论如何都没有扩展$resource 类,创建一个不需要数组的myResource 类?如何扩展 angualr 模块/类?无论如何,它适用于get(),只是我不太喜欢使用get 来获得所有结果以及数据的想法。
    • 要扩展 $resource,您只需创建另一个包装 $resource 的服务并添加您想要的任何其他方法。到那时,它实际上只是为自己创造了额外的工作,因为您最终可能只是在该服务的底层调用$resource.get 来访问您返回的集合。 Angular 是一个非常固执己见的框架,集合的包装方式与 Angular 想要你做的背道而驰。
    • 我明白了,我会去找你的解决方案。在你的最后一行中,“Angular 是一个非常固执己见的框架,而包装集合的方式与 Angular 想要你做的背道而驰。”你的意思是在这种情况下我会按照我的想法或一般来说包装收藏?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多