『AngularJS』Service
理解Angular 服务什么是Angular Service
Angular有一些内建的服务(例如:$http),也可以创建自己的服务。内建的服务通常使用“$”开头(与jQuery类似)。 使用Angular 服务在使用Angular服务的时候,只要将其注册成为Angular组件的一个依赖项目就可以了。Angular会自动对这个服务进行实例化、信赖处理等。 Angular使用“constructor”(构造器)进行信赖注入。信赖将会传递给组件的工厂或构造器方法。因为JavaScript是一个动态类型的语言,Angular的信赖注入子系统不能使用静态的类型来识别服务的信赖。因此,一个组件必须明确的通过使用一种“注释”注入方法来定义它的信赖。例如,使用$inject属性: var MyController = function($location) { ... }; MyController.$inject = ['$location']; myModule.controller('MyController',MyController); 或者提供一个内联的注入“注释”: var myService = function($http) { ... }; myModule.factory('myService',['$http',myService]); 参考:
定义一个服务应用开发人员通过在Angular模块中注册“名字”与“服务工厂”来定义自己的服务。 服务的工厂方法的目的是用来生成单例对象(或者方法function)。生成的对象或者方法可以通过指定到这个服务的信赖来被注入到任意的组件当中。 Angular工厂方法使用消极执行策略,这意味着,只有当需要处理一个依赖的时候,才会为每一个服务执行一次。所有的事项都是依赖于这个服务来获取一个被服务工厂方法生成的实例。 管理服务信赖Angular允许服务声明其他的服务作为信赖需要,用来构造它们的实例。 为了声明依赖,你可以在工厂方法的参数中指定它们,然后通过使用$inject属性、字符串数组或数组注释以注入注释标明这个方法。 使用数组注释: function myModuleCfgFn($provide) { $provide.factory('myService',['dep1','dep2',function(dep1,dep2) {}]); } 使用$inject属性: 下面是两个服务的例子,其中一个依赖另一个,并且这两个服务都依赖Angular框架提供的其他服务: 注意:
参考:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |