【发布时间】:2016-01-07 20:18:23
【问题描述】:
假设我有一个 AngularJS 数据服务,它调用服务器并返回一个可以用其他方法扩展的对象。例如,假设以下函数是诸如 NerdDinner 之类的 AngularJS 服务的一部分。
function getDinner(dinnerId) {
return $http.get('api/dinner/' + dinnerId)
.then(loadDinnerComplete)
.catch(loadDinnerFailed);
function loadDinnerComplete(response) {
return new Dinner(response.data);
}
}
一个地方定义晚餐类的最佳做法是什么?那是一个单独文件中的工厂吗?我是否在 NerdDinner 服务中定义它?还是我在 GetDinner 类中定义它(假设这是唯一可以创建晚餐的方法)?
我没有在style guide 中找到任何关于创建对象的具体参考,所以如果它被覆盖并且我只是错过了它,请原谅我。
编辑 我最终决定接受Jeroen's answer,因为它最符合我对一个相当简单的用例的需求。但是,Daniel's answer 是纯金,不容忽视。如果我选择通过简单的 CRUD 或其他基于服务器的操作来扩展我的 DTO 的功能,那么 $resource 是一个很好的方法。
【问题讨论】:
-
扮演魔鬼的拥护者,除非你明确地输入你的对象(打字稿),否则对象是否首先需要?我不禁想知道您是否正在创建一个不需要和不必要的依赖项。
-
它使一些事情变得方便。例如,我可以做一些类似dinner.hasReservations() 而不是dinner.reservatons.length > 0。
-
同样的功能也可以在控制器或服务内部创建。我不一定不同意,只是指出一个相反的观点:)
-
应有尽有 :) 让魔鬼的拥护者质疑计划的合理性总是好的。
标签: javascript angularjs