我一直在做很多工作Angular.js
,总的来说,我发现它是一个有趣而强大的框架。
我知道关于服务,工厂,提供者,价值的讨论很多,但是我对“什么是”仍然很困惑Factory
。
在其他StackOverflow讨论中,工厂定义如下:
工厂名称
语法:module.factory( 'factoryName', function );
结果:在将factoryName声明为可注入的参数时,将为您提供通过调用传递给module.factory的函数引用而返回的值。
我发现很难理解这种解释,也并没有增加我对工厂的理解。
会有人有关于究竟什么是任何解释或现实生活中的例子份额Factory
,以及为什么你应该代替使用它的Service
,Provider
或者其他?
A service
拥有 对任何 对象 的引用 。
A factory
是一个 返回任何 对象* 的函数 *
A provider
是一个 返回任何 函数的函数
- 呼 -
据我了解,它们几乎都是相同的。主要区别在于它们的复杂性。提供者可以在运行时进行配置,工厂要健壮一些,服务是最简单的形式。
看看这个问题AngularJS:服务vs提供者vs工厂
这个要点也可能有助于理解细微的差异。
来源:https://groups.google.com/forum/#!topic
/
angular /
hVrkvaHGOfc
jsFiddle:http :
//jsfiddle.net/pkozlowski_opensource/PxdSP/14/
作者: Pawel Kozlowski
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() {
// In the provider function, you cannot inject any
// service or factory. This can only be done at the
// "$get" method.
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文档和一些教程,对于文档的难懂性,我感到很惊讶。 我有一个简单的,可以回答的问题,对于其他希望使用AngularJS的人也可能有用: 什么是AngularJS指令? 某个地方应该有一个简单,精确的指令定义,但是AngularJS网站提供了这些令人惊讶的无用定义: 在主页上: 指令是AngularJS中可用的独特而强大的功能。指令可让您发明特定于您的应
问题内容: 我是AngularJS的新手,我无法理解AngularJS的功能。有人可以用最简单的方式来说明AngularJS中的功能以及我们可以使用它做什么。请以一种您完全不了解编程知识的方式向您解释。有人还能以最简单的方式逐行解释下面的代码吗? 问题答案: 每个控制器都有一个关联的对象。 控制器(构造函数)功能负责设置模型属性和功能。这只能通过$ scope来完成。无论您在View(HTML文件
问题内容: 我发现此代码段是有人为引导程序模式编写的角度指令的一部分。 我知道这部分是用于绑定到hide.bs.modal事件的两种方式绑定的后半部分,并在UI更改时更新模式。 我只想知道为什么在调用apply之前检查$$ phase的scope和rootScope的人? 我们不能直接打电话吗? 这里的$$ phase是什么? 我尝试了很多搜索,找不到任何好的解释。 问题答案: 是角度处于周期中时
问题内容: 我看过这样的语法 那双冒号是做什么用的?如果将其删除会怎样? 问题答案: 用于一次性绑定。一旦稳定,即在第一个摘要之后,表达式将停止重新计算。 因此,对所做的任何更新将不可见。
问题内容: 我不太了解其工作原理和作用。 我的主要目标是将它与配合使用以提高精度。 问题答案: 使用要跟踪字符串和重复值 通常按项目本身跟踪每个项目。对于给定的阵列,试图跟踪由每个变化的。问题是我们有重复的值,而角度将引发错误。解决该问题的一种方法是通过其他方式对对象进行角度跟踪。对于字符串,这是一个很好的解决方案,因为您实际上没有其他跟踪字符串的方法。 并触发摘要和输入焦点 您暗示您对角度有些陌
问题内容: 什么是工件,为什么Maven需要它? 问题答案: 工件是一个文件,通常是一个JAR文件,已被部署到Maven存储库。 Maven构建会生成一个或多个工件,例如已编译的JAR和“源” JAR。 每个工件都有一个组ID(通常是一个反向域名,如com.example.foo),一个工件ID(只是一个名称)和一个版本字符串。这三个一起唯一地识别工件。 项目的依赖关系被指定为工件。