Angular Service入门

简介:

1.Angular内置service

Angular为了方便开发者开发,本身提供了非常多的内置服务。可以通过https://docs.angularjs.org/api/ng/service查看AngularJS提供的内置服务。在企业级开发中,常用的服务有以下这些:

  • $cacheFactory 缓存服务

  • $compile 编译服务

  • $filter 通过 $filter 服务可以格式化输出数据,也可以对数据进行过滤操作

  • $http AngularJS内置的核心的服务,主要和后台请求相关

  • $location 基于window.location的Angular版本,功能更强大。比如路由地址的切换: $location.path('/home')

  • $log 开发过程中用到的多,输入错误和调试日志。和Chrome浏览器的console.log()、console.debug()等类似

  • $q 服务主要是用于异步函数返回一个promise,在路由中resovle属性用的较多

  • $rootScope 一个应用只有一个 $rootScope,该服务可以用于每个页面都需要使用的公共数据或者变量,但是开发过程中,建议尽量少用 $rootScope,调试起来不方便。因为它是一个全局变量。

2.Angular自定义Service

可以通过多种方式方式定义Service,常用的使用factory来定义一个service。代码如下:

app.factory('dataService', function () {    var appVerison = "1.0";    var showVersion = function () {        return appVerison;
    };    return {
        appTitle: "Decorators Demo",
        showVersion: showVersion
    }
});

3.在控制器之间共享数据使用Service

控制器和控制器之间共享数据也有多种方式,将变量或者函数绑定$rootScope是一种常见的方式,但是不推荐。常见的情况是使用Service来共享多个controller之间的数据。一个记录图书阅读的系统,需要记录最后一次编辑的图书信息。
BooksController.js里面读取currentUser服务,在编辑的页面给currentUser服务里面的lastBookEdited对象赋值。

定义currentUser服务

angular.module('app')
    .factory('currentUser', function () {        var lastBookEdited = {};        return {
            lastBookEdited: lastBookEdited
        }
        
    });

在EditController.js

dataService.getBookByID($routeParams.bookId)
            .then(function (response) {
                vm.currentBook = response;//将当前编辑的图书对象赋值给lastBookEdited
                currentUser.lastBookEdited=vm.currentBook;属性
            })
            .catch(function (response) {
                $log.error(response);
            });

BooksController.js

vm.currentUser=currentUser;

模板books.html

<div>
    `books`.`summaryData`.`bookCount` Books --    `books`.`summaryData`.`readerCount` Readers --    `books`.`summaryData`.`grandTotalMinutes` Total Minutes Read</div>

4.Decorators(修饰)在Angular Service的使用

在实际开发过程中,我们需要对自己的服务进行增加一下方法,或者对引入的第三方服务增加一下方法,开发者可以不需要修改之前的源代码,而是可以在运行时为Service增加方法。这里需要用到Decorator-修饰。修饰模式是软件设计里面一种经典设计模式,在高级的面向对象语言,比如Java、C#等都有实现。AngularJS代码举例:

 

});



本文转自 sshpp 51CTO博客,原文链接:http://blog.51cto.com/12902932/1926235,如需转载请自行联系原作者

相关文章
|
移动开发 小程序
关于uni-app页面Page和组件Component生命周期执行的先后顺序
关于uni-app页面Page和组件Component生命周期执行的先后顺序
282 0
|
存储 数据安全/隐私保护
App逆向百例|16|某交友App花指令分析
App逆向百例|16|某交友App花指令分析
648 0
|
人工智能
电脑端sip软电话免费下载地址与使用说明(eyebeam)
VOS一件安装文档 与我联系 下载地址: 国内下载 http://47.98.241.45/outbound/Public/sip/eyeBeam.zip(eyebeam) 国内下载 sipphone.cc/phone_lite_… 国外下载 phone.ddrj.com/phone_lite_… 百度云下载 pan.baidu.com/s/1hs64Nbu 使用说明 启动软件 双击 phone.exe AI源码,VOS,SIP软件
2205 0
|
JavaScript 前端开发 Cloud Native
阿里巴巴 Noslate 正式开源 - 面向云原生的 JavaScript 容器方案
继 2019 年开源 Midway 框架之后,阿里一直在 Node.js 的前沿进行深度研究,除了加入 TC39 参与标准化建设,向上游 Node.js 项目持续贡献,与龙蜥社区合作优化之外,也在 Serverless 领域有了不小的成果。
1238 0
阿里巴巴 Noslate 正式开源 - 面向云原生的 JavaScript 容器方案
阿里云域名续费操作流程
阿里云域名续费在域名管理控制台即可操作,续费流程非常简单,阿里云百科以com域名续费为例来详细说下域名续费流程
2851 0
阿里云域名续费操作流程
|
机器学习/深度学习 程序员
程序员的数学【微积分基础】(一)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 微积分基础,微积分是公式推导的基础,如果你也关注我的专栏:西瓜书读书笔记,里面对公式进行详细推导的过程中,运用到了大量的 导数,积分,身为一名程序员,我们务必掌握一些必备的数学知识。
434 0
程序员的数学【微积分基础】(一)
|
程序员 定位技术 uml
|
编解码 数据挖掘 ice
Google Earth Engine ——数据全解析专辑(COPERNICUS/S2_SR)20154至今哨兵-2号(SR) 数据集
Google Earth Engine ——数据全解析专辑(COPERNICUS/S2_SR)20154至今哨兵-2号(SR) 数据集
829 0
Google Earth Engine ——数据全解析专辑(COPERNICUS/S2_SR)20154至今哨兵-2号(SR) 数据集
|
Java
如何避免忘记清理 ThreadLocal ?
hreadLocal 可以解决“线程安全问题”。 也可以作为上下文暂存数据以备后续步骤获取。 但是 ThreadLocal 用不好的确容易产生故障,因而有些团队不允许使用 ThreadLocal。 最核心的一个原因是很容易忘记清理,在线程池环境下复用导致串环境。 那么,有什么优雅的解法没?本文给出自己的一个解法。
949 0
如何避免忘记清理 ThreadLocal ?
|
SQL 存储 缓存
使用实践:监控告警常见问题
本文总结了使用Hologres时常见的监控告警相关问题,以帮助你能更好的使用Hologres。
1394 0
使用实践:监控告警常见问题