1. AngularJS服务

  AngularJS可注入类型包括:Service、Factory、Provider、Value及Constant。

2. Service

  AngularJS Service是封装了一些特定业务逻辑的单例对象在每个应用中只会被实例化一次(由$injector实例化),且延迟加载(需要时才会创建)

  AngularJS Service对外提供方法供其他组件调用。

2.1 AngularJS内置Service对象

  AngularJS内置30多个服务。

1>. $location:返回当前页面的 URL 地址

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.controller("HelloCtrl", ["$scope", "$location", function ($scope, $location) {
  9. $scope.url = $location.absUrl();
  10. }]);
  11. </script>
  12. </head>
  13. <body>
  14. <div ng-controller="HelloCtrl">
  15. {{ url }}
  16. </div>
  17. </body>
  18. </html>

2>.$timeout:在指定的毫秒数后调用函数或计算表达式,只执行一次

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.controller("HelloCtrl", ["$scope", "$timeout", function ($scope, $timeout) {
  9. $scope.text = "Hello World!";
  10. $timeout(function () {
  11. $scope.text = "Hello AngularJS!";
  12. }, 2000);
  13. }]);
  14. </script>
  15. </head>
  16. <body>
  17. <div ng-controller="HelloCtrl">
  18. {{ text }}
  19. </div>
  20. </body>
  21. </html>

3>.$interval:按照指定的周期(以毫秒计)来调用函数或计算表达式,会多次不停地调用执行。

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.controller("HelloCtrl", ["$scope", "$interval", function ($scope, $interval ) {
  9. $scope.time = new Date().toLocaleTimeString();
  10. $interval (function () {
  11. $scope.time = new Date().toLocaleTimeString();
  12. }, 1000);
  13. }]);
  14. </script>
  15. </head>
  16. <body>
  17. <div ng-controller="HelloCtrl">
  18. {{ time }}
  19. </div>
  20. </body>
  21. </html>

4>.不使用 $interval 服务的情况下,运用 $apply显示时间。

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.controller("HelloCtrl", ["$scope", function ($scope) {
  9. $scope.time = new Date().toLocaleTimeString();
  10. $scope.setTime = function() {
  11. // $apply访问并修改数据
  12. $scope.$apply (function () {
  13. $scope.time = new Date().toLocaleTimeString();
  14. });
  15. }
  16.  
  17. setInterval($scope.setTime, 1000);
  18. }]);
  19. </script>
  20. </head>
  21. <body>
  22. <div ng-controller="HelloCtrl">
  23. {{ time }}
  24. </div>
  25. </body>
  26. </html>

2.2 自定义服务

  AngularJS自定义服务语法格式:

  1. var app = angular.module("app", []);
  2. app.service("serviceName", function(){
  3. // 属性、方法
  4. });

其中:

  第一个参数:Service名称

  第二个参数:Service对象的构造函数,可以定义属性和方法来封装处理一些逻辑。

示例1:

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.controller("HelloCtrl", ["$scope", "$datetime", function ($scope, $datetime) {
  9. $scope.time = $datetime.getTime();
  10. }]);
  11. app.service("$datetime", function(){
  12. this.getTime = function() {
  13. return new Date().toLocaleTimeString();
  14. };
  15. });
  16. </script>
  17. </head>
  18. <body>
  19. <div ng-controller="HelloCtrl">
  20. {{ time }}
  21. </div>
  22. </body>
  23. </html>

示例2:

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.controller("HelloCtrl", ["$scope", "$interval", "$datetime", function ($scope, $interval, $datetime) {
  9. $interval (function () {
  10. $scope.time = $datetime.getTime();
  11. }, 1000);
  12. }]);
  13. app.service("$datetime", function(){
  14. this.getTime = function() {
  15. return new Date().toLocaleTimeString();
  16. };
  17. });
  18. </script>
  19. </head>
  20. <body>
  21. <div ng-controller="HelloCtrl">
  22. {{ time }}
  23. </div>
  24. </body>
  25. </html>

示例3:在自定义的Service中可以注入其他Service对象。

  1. <!DOCTYPE html>
  2. <html ng-app="app">
  3. <head>
  4. <meta charset="utf-8" />
  5. <script type="text/javascript" src="../lib/angular.min.js"></script>
  6. <script type="text/javascript">
  7. var app = angular.module("app", []);
  8. app.run(["$datetime", function ($datetime) {
  9. $datetime.getTime();
  10. }]);
  11. app.service("$datetime", ["$interval", "$log", function($interval, $log) {
  12. this.getTime = function() {
  13. $interval (function () {
  14. $log.info(new Date().toLocaleTimeString());
  15. }, 1000);
  16. };
  17. }]);
  18. </script>
  19. </head>
  20. <body>
  21. </body>
  22. </html>

文章来源:AngularJS 1.x系列:AngularJS服务-Service、Factory、Provider、Value及Constant(5)

AngularJS 1.x系列

AngularJS 1.x系列:AngularJS服务-Service的更多相关文章

  1. Android系统编程入门系列之服务Service齐头并进多线程任务

    在上篇文章中初步了解了Android系统的四大组件之一的服务Service,在服务内可以执行无用户交互的耗时操作任务,但是包括之前关于界面系列文章在内,生命周期方法都是在主线程内被系统回调的.如果直接 ...

  2. Android系统编程入门系列之服务Service中的进程间通信

    在上篇文章以线程间的通信方式Handler类结尾,服务Service还支持的进程间通信,又是具体怎么实现的呢?这就要用到加载服务一文中提到的AIDL语言规范了. AIDL是 Android Inter ...

  3. AngularJS 1.x系列:AngularJS服务-Service、Factory、Provider、Value及Constant(5)

    1. AngularJS服务 AngularJS可注入类型包括:Service.Factory.Provider.Value及Constant. 2. Service AngularJS Servic ...

  4. 【AngularJS中的自定义服务service VS factory VS provider】---它们的区别,你知道么?

    在介绍AngularJS自定义服务之前,我们先来了解一下AngularJS~ 学过HTML的人都知道,HTML是一门很好的伪静态文本展示设计的声明式语言,但是,要构建WEB应用的话它就显得乏力了. 而 ...

  5. [后端人员耍前端系列]AngularJs篇:30分钟快速掌握AngularJs

    一.前言 对于前端系列,自然少不了AngularJs的介绍了.在前面文章中,我们介绍了如何使用KnockoutJs来打造一个单页面程序,后面一篇文章将介绍如何使用AngularJs的开发一个单页面应用 ...

  6. angularjs中provider,factory,service的区别和用法

    angularjs中provider,factory,service的区别和用法 都能提供service,但是又有差别 service 第一次被注入时实例化,只实例化一次,整个应用的生命周期中是个单例 ...

  7. [AngularJS] 使用AngularAMD动态加载Service

    [AngularJS] 使用AngularAMD动态加载Service 前言 「使用AngularAMD动态加载Controller」:这篇文章里介绍如何使用AngularAMD来动态加载Contro ...

  8. AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)

    AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记) 前言 在"AngularJS项目开发技巧之图片预加载" ...

  9. AngularJS学习之旅—AngularJS 服务(八)

    1.AngularJS 服务(Service) AngularJS 中你可以创建自己的服务,或使用内建服务.2.什么是服务? 在 AngularJS 中,服务是一个函数或对象,可在你的 Angular ...

随机推荐

  1. imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区

    在oracle里创建表,报出错: ORA-01658: 无法为表空间space中的段创建 INITIAL 区: 或者: ORA-01658: unable to create INITIAL exte ...

  2. [转]SQLServer添加UPDATE回滚日志(update/delete/insert)

    下面直接上代码(copy到你的数据库里面直接就可以运行): CREATE PROCEDURE [dbo].[SP_UPDATE_LOG] ) AS BEGIN SET NOCOUNT ON; IF N ...

  3. spring 项目返回406

    406 The resource identified by this request is only capable of generating responses with characteris ...

  4. 【bzoj2186】[Sdoi2008]沙拉公主的困惑

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 3303  Solved: 1129[Submit][S ...

  5. Linux 安装lamp

    安装软件包编译器 gcc -v 查看是否存在 yum -y install gcc gcc-c++ mack rpm -q httpd 查看是否安装http rpm -e httpd --nodeps ...

  6. 使用递归函数,输出n个元素的所有子集

    题目描述: 请编写一个递归函数,用来输出n个元素的所有子集.例如,三个元素{a,b,c}的所有子集是:{},{a},{b},{c},{a,c},{ac},{b,c},{a,b,c}. 解题思路: 根据 ...

  7. cocos2D-x demo 的源码分析 #define ..##.. 的妙用.

    最近在看cocos2d-x 但不知道如何下手,于是先看一下他编译的完成的testcpp的源码.发现了下面一段程序 typedef CCLayer* (*NEWTESTFUNC)(); #define ...

  8. SQL CLR学习

    SQL CLR (SQL Common Language Runtime) 是自 SQL Server 2005 才出现的新功能,它将.NET Framework中的CLR服务注入到 SQL Serv ...

  9. 12-scanf("%*s")与printf("%*s")

    在scanf里用*修饰符,是起到过滤读入的作用.比如一个有三列数值的数据,我只想得到第2列数值,可以在循环里用scanf(“%*d%d%*d”,a[i])来读入第i行的第2个数值到a[i].     ...

  10. Apr编程

    一.简介 http://www.xuebuyuan.com/2195578.html   二.教程 http://dev.ariel-networks.com/apr/