AngularJS学习(八) --服务Service

来源:互联网 发布:单片机swap是什么意思 编辑:程序博客网 时间:2024/04/26 17:30

一、什么是服务

 Angular 服务是为web应用执行特定任务的单例对象或方法。简而言之,就是controller共用的函数。

在其他语言中如java便有这样的概念,其作用就是对外提供某个特定的功能,如消息服务,文件压缩服务等,是一个独立的模块。ng的服务是这样定义的:

Angular services are singletons objects or functions that carry out specific tasks common to web apps.


因为我们一般不复用controller,这就需要抽象出一个公共的方法来为controller提供复用


Services都是单例的,就是说在一个应用中,每一个Serice对象只会被实例化一次(用$injector服务),主要负责提供一个接口把特定函数需要的方法放在一起,使用时候,我们不需要创建他,只需要将它注入到controller,其他服务或者指令中即可。

二、AngularJS内置的服务

ng提供了很多内置的服务,可以到API中查看 http://docs.angularjs.org/api/

例如$location,$resource,$scope

三、自定义服务

    使用module来创建, 常用的有3种创建方式 provider,service,factory

 1.factory方式

步骤一:定义服务

  service.js

var myservice = angular.module('myservice',[]); //申明一个module模块myservice.factory('factorytest',function($window){   //直接.facotry创建,有2个参数,1.服务名 2.服务执行的函数var test = {                               //服务中定义一些属性等firstname:'zhang',lastname:function(){return '三';}};return test;//服务返回值}).factory('foo', function() {                     //多个服务可以接着用.factory  var thisIsPrivate = "Private";  function getPrivate() {                     //服务中还可一定义一些函数    return thisIsPrivate;  }  return {    variable: "This is public",    getPrivate: getPrivate  };});

   步骤二: 使用服务

 

var myapp = angular.module('myapp',['myservice']);  //依赖注入模块myapp.controller('testservice',function($scope,factorytest){  //注入服务alert(factorytest.firstname +"        "+ factorytest.lastname());});
2.provider

3.service



1 0
原创粉丝点击