我不知道什么是最佳做法,应该使用什么。
以下两种方法有什么区别?
module.service(..);
和
module.factory(..);
Pawel Kozlowski有一篇很棒的google小组相关文章:
https://groups.google.com/forum/#!msg/angular/hVrkvaHGOfc/idEaEctreMYJ
引用Powel的话:
实际上,$ provide.provider,$ provide.factory和$
provide.service几乎是同一件事,因为它们都是用于创建对象实例的蓝图/指令(然后可以将这些实例准备注入协作者中) 。$ provide.provider是注册图纸最复杂的方法,它使您可以使用复杂的创建功能和配置选项。
$ provide.factory是$ provide.provider的简化版本,当您不需要支持配置选项但仍然希望拥有更复杂的创建逻辑时。
$ provide.service用于整个创建逻辑归结为调用构造函数的情况。
因此,根据构造逻辑的复杂性,您可以选择$ provide.provider,$ provide.factory和$
provide.service之一,但最终您将获得一个新实例。
这是随附的小提琴,用于演示(从线程):http
:
//jsfiddle.net/pkozlowski_opensource/PxdSP/14/
和代码:
var myApp = angular.module('myApp', []);
//service style, probably the simplest one
myApp.service('helloWorldFromService', function() {
this.sayHello = function() {
return "Hello, World!"
};
});
//factory style, more involved but more sophisticated
myApp.factory('helloWorldFromFactory', function() {
return {
sayHello: function() {
return "Hello, World!"
}
};
});
//provider style, full blown, configurable version
myApp.provider('helloWorld', function() {
this.name = 'Default';
this.$get = function() {
var name = this.name;
return {
sayHello: function() {
return "Hello, " + name + "!"
}
}
};
this.setName = function(name) {
this.name = name;
};
});
//hey, we can configure a provider!
myApp.config(function(helloWorldProvider){
helloWorldProvider.setName('World');
});
function MyCtrl($scope, helloWorld, helloWorldFromFactory, helloWorldFromService) {
$scope.hellos = [
helloWorld.sayHello(),
helloWorldFromFactory.sayHello(),
helloWorldFromService.sayHello()];
}
问题内容: 我一直看到在AngularJS中创建控制器和服务的不同示例,我很困惑,有人可以向我解释两种方法之间的区别吗? 还有一个控制器示例: 问题答案: 第一个将污染全局名称空间,从长远来看,这不是您想要的。 第二个将控制器的作用域限定为该模块实例。它也可以注射。最好还是使用数组符号(如下所示),因为这会在最小化后继续存在。 (角度)服务与工厂之间的差异似乎很小。服务包装了工厂,工厂使用$ in
问题内容: 对于一个宠物项目,数据库进入了顶峰, 元数据 达到了顶峰,我很难理解该命令与MySQL命令之间的区别(如果有)。 有什么区别吗?如果不是这样,这是关系数据库行为的一种相当典型的模式(我听说过,对于其他数据库(例如Oracle),模式存在于数据库中,而不是与数据库处于同一级别)。 谢谢! 问题答案: MySQL的文档说: CREATE DATABASE创建具有给定名称的数据库。要使用此语
问题内容: 有人可以在OOP上下文中提供方法与功能的简单说明吗? 问题答案: 甲函数是一段代码由名字叫做。可以传递数据以对其进行操作(即参数),还可以选择返回数据(返回值)。传递给函数的所有数据都被显式传递。 甲方法是一段代码,由与对象相关联的名称叫。在大多数方面,它与功能相同,但有两个主要区别: 方法被隐式传递给调用该方法的对象。 方法能够对类中包含的数据进行操作(记住,对象是类的实例-类是定义
我想构建一个restful服务/API。我使用了一些像play这样的框架来构建它,但我想尝试其他更有效的方法。我听说Jersey是构建rest API的常用库,Spring也是一个很好的框架。但我也看到了一些类似Spring+Jersey的解决方案。因此,我对那些rest API解决方案有点困惑。 我的目标是构建几个将JSON作为输入/输出的rest API。我有jar文件作为后端处理逻辑来处理输
似乎可以根据任务定义运行任务或服务。任务和服务之间有什么区别和相似之处?在创建任务而不是服务时可以指定“任务组”这一事实是否有线索?任务和服务在层次上是任务定义的平等实例,还是服务由任务组成?
问题内容: 类方法和实例方法有什么区别? 实例方法是访问器(getter和setter)而类方法是其他所有东西吗? 问题答案: 就像大多数其他答案所说的那样,实例方法使用类的实例,而类方法只能与类名一起使用。因此在Objective-C中对它们进行了定义: 然后可以像这样使用它们: 一些真实世界的类方法的例子是很多基础类,如方便的方法的或的。实例方法将是的方法。