小编use*_*747的帖子

AngularJS:何时使用服务而不是工厂

请在这里忍受我.我知道还有其他答案,例如: AngularJS:Service vs provider vs factory

但是,当你在工厂使用服务时,我仍然无法弄清楚.

据我所知,工厂通常用于创建可由多个控制器调用的"通用"功能:创建通用控制器功能

Angular文档似乎更喜欢工厂而不是服务.他们甚至在使用工厂时提到"服务",这更令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services

那么什么时候才能使用服务?

是否有可能通过服务完成或更容易完成的事情?

幕后有什么不同吗?性能/内存差异?

这是一个例子.除了声明的方法,它们看起来完全相同,我无法弄清楚为什么我会做一个与另一个.http://jsfiddle.net/uEpkE/

更新:从托马斯的回答看来,似乎暗示服务是为了更简单的逻辑和工厂用于更复杂的逻辑与私有方法,所以我更新了下面的小提琴代码,似乎两者都能够支持私人功能?

myApp.factory('fooFactory', function() {
    var fooVar;
    var addHi = function(foo){ fooVar = 'Hi '+foo; }

    return {
        setFoobar: function(foo){
            addHi(foo);
        },
        getFoobar:function(){
            return fooVar;
        }
    };
});
myApp.service('fooService', function() {
    var fooVar;
    var addHi = function(foo){ fooVar = 'Hi '+foo;}

    this.setFoobar = function(foo){
        addHi(foo);
    }
    this.getFoobar = function(){
        return fooVar;
    }
});

function MyCtrl($scope, fooService, fooFactory) {
    fooFactory.setFoobar("fooFactory");
    fooService.setFoobar("fooService");
    //foobars = "Hi fooFactory, …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-service angularjs-factory

294
推荐指数
4
解决办法
12万
查看次数