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代码举例:

var app = angular.module(‘app‘, []);

app.controller(‘MainCtrl‘, function ($scope, dataService) {
    $scope.app = dataService;
});

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

app.config(function ($provide) {
    $provide.decorator(‘dataService‘, function ($delegate) {
        $delegate.sayHello = function () {            return "a new function of ‘dataService‘";
        };        return $delegate;
    });
});
时间: 2024-12-14 02:06:52

Angular Service入门的相关文章

angular service provider

关于  angular service factory  provider 方面有很多,我也来写一篇加深下印象. provider 是一切方法的基础,所以功能也最强,provider 用来定义一个可以被注入的服务,其实就是一个依赖注入的模块. 已ng-route 为例 var ngRouteModule = angular.module('ngRoute', ['ng']). provider('$route', $RouteProvider); 等价  AngularJS在模块对象上直接暴露了

angular service/directive

<html class=" js cssanimations csstransitions" ng-app="phonecatApp" > <head> <title>{{title}}</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name=&

Angular 快速入门

Angular 快速入门 AngularJS 官方网址 Angular:https://www.angular.cn/ Angular官网:https://angularjs.org/ AngularJS 1.X 的困境 饱受诟病的性能问题. 落后当前web的发展理念(如组件开发方式) 对手机端支持不够友好 Angular 2.x 特性 16年5月正式发布. 2版本取消了JS的叫法,直接叫做 Angular 2版本不能兼容1版本的代码. 移除 controller + $scope 设计,改用组

angular service讲解

controller是相对独立的,也就是说,两个controller之间,内存是不共享的,这个controller是无法访问其他其他controller的属性或者方法的; 以前,我都是通过localStorage来进行储存,后来发来localStorage应该是用来存储持久化数据,用来存储临时数据,controller互相交互,官方建议通过service来进行相互访问. 也就是说,service是用于不同controller或者directive中用于共享数据的一种服务. 举例说明: html

angular基础入门文档以及博客汇集

angular入门 anrualar知识点 相对应文档 来源 注解析 ng-class http://www.cnblogs.com/whitewolf/archive/2013/05/22/3092184.html CSDN 实现class的控制                                                                                                                              

Angular快速入门篇

简介 AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使用HTML声明动态内容. AngularJS有五个主要核心特性,如下介绍: 双向数据绑定 —— 实现了把model与view完全绑定在一起,model变化,view也变化,反之亦然. 模板 —— 在AngularJS中,模板相当于HTML文件被浏览器解析到DOM中,AngularJS遍历这些DOM,

最新 angular 5 入门与提高

一.概述 尽管被称为Angular5,实际上它只是这个诞生于2012年的前端框架的的第四个版本: 看起来差不多半年就发布一个新版本,不过实际上从重写的版本2开始,开发 接口与核心思想就稳定下来了,并基本保持着与前序版本的兼容性. 在5这个新的版本中,Angular团队将改进重点放在以下特性方面: 更易于构建渐进式Web应用 -- Progressive Web App 使用构建优化器剔除无用代码,以获得更小的应用.更快的网络加载时间 使物化设计组件兼容服务端渲染 PWA是Google提出的一个标

Angular 4入门教程系列 1 运行在Docker中的HelloWorld

Angular作为目前前端的一个重要选择,加之背后站着google,得到了越来越多的开发者的青睐.但是发现没有按照由浅入深地实例化的教程,虽然官网的教程已经不错,但是初始入门的细节没有提到,再加之网络等问题,决定把官网的教程替大家做一遍给大家留个笔记.同时可能会结合docker进行使用,当然没有安装docker也完全没有关系,同样执行就可以了. 事前准备 OS [root@angular docker]# uname -a Linux angular 3.10.0-514.el7.x86_64

学习-angular 7入门

1.安装脚手架:npm install -g @angular/cli 安装之后,输入命令 ng v: Package Version ------------------------------------------------------ @angular-devkit/architect 0.13.3 @angular-devkit/core 7.3.3 @angular-devkit/schematics 7.3.3 @schematics/angular 7.3.3 @schemat