factoy vs角度服务
我有一个适用于工厂和服务的代码:我很困惑我需要使用哪些代码。
此代码使用service
在console.log中输出my value
var mod = angular.module("MyModule", []);
mod.service("myService", function() {
console.log("this is service");
return {
getvalue : function() {
return "My value";
}
};
});
mod.controller("MyController", function(myService) {
console.log("MyController - myFactory: " + myService.getvalue());
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="MyModule">
<div ng-controller="MyController"></div>
</div>
Todd Motto的这篇博客文章值得数千个答案。
使用.factory()为我们提供了更多的功能和灵活性,而.service()本质上是.factory()调用的“最终结果”。 .service()通过在函数上调用new来返回值,这可以是限制性的,而.factory()是在编译过程之前的一步,因为我们可以选择要实现并返回的模式。
它解释了源代码级别的不同之处。
在现实生活中,我的观点是,使用其中一种是一种品味的问题。
来自Java,我喜欢.service
看起来像使用这个类的类。
让我解释
服务
服务为我们提供了一种方法,可以在应用程序的整个生命周期中保持数据,并以一致的方式跨控制器进行通信。 服务是单例对象,每个应用程序只能实例化一次(由$注入器实例化),并且只能在必要时创建。 它们提供了一个接口来将那些与特定功能相关的方法放在一起。
厂
这个服务工厂的功能是负责生成一个单一的对象或功能,成为这个服务,这将存在的应用程序的生命周期。 当我们的Angular应用程序加载服务时,服务将执行此函数,并保留返回的值作为单例服务对象。 服务工厂函数可以是一个函数或一个数组,就像我们创建控制器的方式一样:
所以我希望你使用工厂来进行核心操作,并从一个服务中调用这个工厂(你需要为此创建一个saporate服务),这样你可以在你的应用程序中提供更多的隔离。
例
*使一个工厂像:
app.factory('memberServiceFactory', ['$http','$filter', function ($http,$filter) {
return {
getData: function (data) {
return {};
},
addData: function (file, formData) {
},
}
}]);
*制作一项服务,如:
app.service('memberListService', ['memberServiceFactory', function (memberServiceFactory){
this.getList = memberServiceFactory.getData;
this.addMember = memberServiceFactory.addData;
}]);
你可以在这里看到我从服务中调用工厂,你可以像这样提供封装。
链接地址: http://www.djcxy.com/p/77563.html上一篇: factoy vs service in angular
下一篇: How to include/inject functions which use $scope into a controller in angularjs?