【发布时间】:2014-08-19 03:19:24
【问题描述】:
我正在慢慢学习 Angular,我想知道我的单身人士(服务和工厂)是否应该向我的控制器返回一个承诺对象(包含所需数据),或者是否应该首先在工厂解决所有承诺,我只将 response.data 传递给我的控制器?我已经看到使用这两种方法,并且想知道最佳实践是什么。谢谢。
【问题讨论】:
-
没有最佳实践。这在很大程度上取决于手头的情况。对于异步数据,返回一个 Promise 通常是个好主意。但是,如果数据是一个将绑定到视图的数组,那么返回一个空数组也是一个好主意,该数组稍后会在数据到达时被填充。
-
如果异步请求返回的数据是数组怎么办?我只是不想在我的控制器中混合太多不同的约定。
-
ExpertSystem 是正确的。此外,当使用路由库时(我推荐
uiRouter),您可能只想在服务完成加载一些数据后加载状态/路由(使用resolve);在这种情况下,从您的服务中返回承诺是最好的选择。 -
@NiallO'Brien:一位智者曾经说过:“对于异步数据,返回一个承诺通常是一个好主意。但如果数据是一个数组 [...],返回一个空数组也是一个好主意,该数组稍后会在数据到达时填充。” 不想混合不同的方法是您的权利,但这并不是一个好的做法: ) 不同的方法适用于不同的情况。在现实世界的应用程序中,您会遇到不同的情况,因此需要不同的方法。一致性是一回事,用同一个螺丝刀拧各种螺丝是另一回事
-
我认为这两种方法同样有效,而且没有一种方法被认为比另一种更好。作用域上绑定的好处在于,如果引用发生更改(这也适用于数组),更改检测会起作用,并且当您保留数组引用但您在绑定到的数组中添加/删除/更新项目时也可以使用ng-重复。
标签: angularjs service promise factory