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?