我们如何才能像工厂一样使用服务?

问题描述:

<!DOCTYPE html> 
<html ng-app='myApp'> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 

<script> 
    var app = angular.module('myApp', []); 
    app.controller('x', function (ser) { 
     alert(ser.val); 
    }); 
    app.service('ser', function() { 
     var obj = {}; 
     obj.val = 'xyz'; 
     return obj; 
    }) 
</script> 

<body> 

    <h1 ng-controller='x'>My First JavaScript Animation</h1> 

</body> 

</html> 

我们可以在对象上创建并赋予对象属性并在工厂中返回它,但是service是一个构造函数,但是在程序中,我的操作与我应该在工厂中通过创建并返回目的。 是不是应该使用这个关键字来完成......但它的工作原理?我们如何才能像工厂一样使用服务?

+1

请缩进您的代码。是的,这是允许的,因为当Javascript构造函数返回一个对象时,它将被用作new'ed对象。 –

我提到这个链接: [https://www.airpair.com/angularjs/posts/top-10-mistakes-angularjs-developers-make][1]

按照这个链接:

这些名称引起混乱,几乎每一个AngularJS开发起步的时候。他们真的不应该因为它们是(几乎)相同的语法糖! 下面是从AngularJS源及其定义:

function factory(name, factoryFn) { 
    return provider(name, { $get: factoryFn }); 
} 

function service(name, constructor) { 
    return factory(name, ['$injector', function($injector) { 
     return $injector.instantiate(constructor); 
    }]); 
} 

从源头上就可以看到该服务只是调用工厂函数进而调用提供者的功能。