【问题标题】:AngularJS : What should my services return to controllers?AngularJS:我的服务应该返回给控制器什么?
【发布时间】:2014-08-19 03:19:24
【问题描述】:

我正在慢慢学习 Angular,我想知道我的单身人士(服务和工厂)是否应该向我的控制器返回一个承诺对象(包含所需数据),或者是否应该首先在工厂解决所有承诺,我只将 response.data 传递给我的控制器?我已经看到使用这两种方法,并且想知道最佳实践是什么。谢谢。

【问题讨论】:

  • 没有最佳实践。这在很大程度上取决于手头的情况。对于异步数据,返回一个 Promise 通常是个好主意。但是,如果数据是一个将绑定到视图的数组,那么返回一个空数组也是一个好主意,该数组稍后会在数据到达时被填充。
  • 如果异步请求返回的数据是数组怎么办?我只是不想在我的控制器中混合太多不同的约定。
  • ExpertSystem 是正确的。此外,当使用路由库时(我推荐uiRouter),您可能只想在服务完成加载一些数据后加载状态/路由(使用resolve);在这种情况下,从您的服务中返回承诺是最好的选择。
  • @NiallO'Brien:一位智者曾经说过:“对于异步数据,返回一个承诺通常是一个好主意。但如果数据是一个数组 [...],返回一个空数组也是一个好主意,该数组稍后会在数据到达时填充。” 不想混合不同的方法是您的权利,但这并不是一个好的做法: ) 不同的方法适用于不同的情况。在现实世界的应用程序中,您会遇到不同的情况,因此需要不同的方法。一致性是一回事,用同一个螺丝刀拧各种螺丝是另一回事
  • 我认为这两种方法同样有效,而且没有一种方法被认为比另一种更好。作用域上绑定的好处在于,如果引用发生更改(这也适用于数组),更改检测会起作用,并且当您保留数组引用但您在绑定到的数组中添加/删除/更新项目时也可以使用ng-重复。

标签: angularjs service promise factory


【解决方案1】:

没有最佳实践。这在很大程度上取决于手头的情况 - 不同的情况/要求需要不同的方法。

根据经验,对于异步数据,返回 promise 通常是个好主意。

然而,如果数据是一个将绑定到视图的数组(例如使用ngRepeat),那么返回一个空数组也是一个好主意,该数组稍后会在数据到达时被填充。 这样做的好处是控制器中不需要额外的逻辑。
(顺便说一句,$resource 将这种方法用于其 'GET' 方法。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 2011-06-10
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多