【发布时间】:2014-05-29 05:39:57
【问题描述】:
我正在学习 AngluarJS,我有一个非常简单的项目设置。
我有一个名为 ApiService.js 的文件,用于从某处的 RESTful 服务器中提取数据。目前它看起来像这样:
var module = angular.module('MyProject.services', []);
module.service('ApiService', function() {
this.getDataList = function() {
...
...
}
});
然后我有一个像这样使用它的控制器:
var module = angular.module('MyProject.controllers', []);
module.controller('dataController', function($scope, ApiService) {
$scope.dataList = ApiService.getDataList();
});
我不确定是否应该在我的 services.js 中使用 module.service 或 module.factory(这也让我感到困惑,约定是当工厂可以在那里时调用文件 services.js)。我知道工厂是什么,我知道常规软件设计模式中的服务是什么,但我不知道我应该怎么做才能以 Angular 的方式做到这一点。
什么是正确的,服务还是工厂?
【问题讨论】:
-
查看这篇文章,了解 AngularJS 中的工厂、服务和提供者的详细说明:stackoverflow.com/questions/15666048/…
-
差异是如此微妙;我不认为这很重要。当我开始时,我使用工厂,但已经转向服务。
-
我已经阅读了这个问题,但我仍然不确定。我觉得我应该使用服务,因为 dataApi 在我的应用程序中的任何地方都应该是相同的。工厂每次都会创建一个新实例。
-
@CameronBall A Factory 不会每次都创建一个新实例。我在正式答案中对此进行了详细说明;因为我认为您可能正在经历与我最初一样的“困惑”。
标签: javascript angularjs design-patterns