AngularJS 1.x系列:AngularJS服务-Service
1. AngularJS服务
AngularJS可注入类型包括:Service、Factory、Provider、Value及Constant。
2. Service
AngularJS Service是封装了一些特定业务逻辑的单例对象,在每个应用中只会被实例化一次(由$injector实例化),且延迟加载(需要时才会创建)。
AngularJS Service对外提供方法供其他组件调用。
2.1 AngularJS内置Service对象
AngularJS内置30多个服务。
1>. $location:返回当前页面的 URL 地址
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.controller("HelloCtrl", ["$scope", "$location", function ($scope, $location) {
- $scope.url = $location.absUrl();
- }]);
- </script>
- </head>
- <body>
- <div ng-controller="HelloCtrl">
- {{ url }}
- </div>
- </body>
- </html>
2>.$timeout:在指定的毫秒数后调用函数或计算表达式,只执行一次。
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.controller("HelloCtrl", ["$scope", "$timeout", function ($scope, $timeout) {
- $scope.text = "Hello World!";
- $timeout(function () {
- $scope.text = "Hello AngularJS!";
- }, 2000);
- }]);
- </script>
- </head>
- <body>
- <div ng-controller="HelloCtrl">
- {{ text }}
- </div>
- </body>
- </html>
3>.$interval:按照指定的周期(以毫秒计)来调用函数或计算表达式,会多次不停地调用执行。
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.controller("HelloCtrl", ["$scope", "$interval", function ($scope, $interval ) {
- $scope.time = new Date().toLocaleTimeString();
- $interval (function () {
- $scope.time = new Date().toLocaleTimeString();
- }, 1000);
- }]);
- </script>
- </head>
- <body>
- <div ng-controller="HelloCtrl">
- {{ time }}
- </div>
- </body>
- </html>
4>.不使用 $interval 服务的情况下,运用 $apply显示时间。
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.controller("HelloCtrl", ["$scope", function ($scope) {
- $scope.time = new Date().toLocaleTimeString();
- $scope.setTime = function() {
- // $apply访问并修改数据
- $scope.$apply (function () {
- $scope.time = new Date().toLocaleTimeString();
- });
- }
- setInterval($scope.setTime, 1000);
- }]);
- </script>
- </head>
- <body>
- <div ng-controller="HelloCtrl">
- {{ time }}
- </div>
- </body>
- </html>
2.2 自定义服务
AngularJS自定义服务语法格式:
- var app = angular.module("app", []);
- app.service("serviceName", function(){
- // 属性、方法
- });
其中:
第一个参数:Service名称
第二个参数:Service对象的构造函数,可以定义属性和方法来封装处理一些逻辑。
示例1:
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.controller("HelloCtrl", ["$scope", "$datetime", function ($scope, $datetime) {
- $scope.time = $datetime.getTime();
- }]);
- app.service("$datetime", function(){
- this.getTime = function() {
- return new Date().toLocaleTimeString();
- };
- });
- </script>
- </head>
- <body>
- <div ng-controller="HelloCtrl">
- {{ time }}
- </div>
- </body>
- </html>
示例2:
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.controller("HelloCtrl", ["$scope", "$interval", "$datetime", function ($scope, $interval, $datetime) {
- $interval (function () {
- $scope.time = $datetime.getTime();
- }, 1000);
- }]);
- app.service("$datetime", function(){
- this.getTime = function() {
- return new Date().toLocaleTimeString();
- };
- });
- </script>
- </head>
- <body>
- <div ng-controller="HelloCtrl">
- {{ time }}
- </div>
- </body>
- </html>
示例3:在自定义的Service中可以注入其他Service对象。
- <!DOCTYPE html>
- <html ng-app="app">
- <head>
- <meta charset="utf-8" />
- <script type="text/javascript" src="../lib/angular.min.js"></script>
- <script type="text/javascript">
- var app = angular.module("app", []);
- app.run(["$datetime", function ($datetime) {
- $datetime.getTime();
- }]);
- app.service("$datetime", ["$interval", "$log", function($interval, $log) {
- this.getTime = function() {
- $interval (function () {
- $log.info(new Date().toLocaleTimeString());
- }, 1000);
- };
- }]);
- </script>
- </head>
- <body>
- </body>
- </html>
文章来源:AngularJS 1.x系列:AngularJS服务-Service、Factory、Provider、Value及Constant(5)
AngularJS 1.x系列:AngularJS服务-Service的更多相关文章
- Android系统编程入门系列之服务Service齐头并进多线程任务
在上篇文章中初步了解了Android系统的四大组件之一的服务Service,在服务内可以执行无用户交互的耗时操作任务,但是包括之前关于界面系列文章在内,生命周期方法都是在主线程内被系统回调的.如果直接 ...
- Android系统编程入门系列之服务Service中的进程间通信
在上篇文章以线程间的通信方式Handler类结尾,服务Service还支持的进程间通信,又是具体怎么实现的呢?这就要用到加载服务一文中提到的AIDL语言规范了. AIDL是 Android Inter ...
- AngularJS 1.x系列:AngularJS服务-Service、Factory、Provider、Value及Constant(5)
1. AngularJS服务 AngularJS可注入类型包括:Service.Factory.Provider.Value及Constant. 2. Service AngularJS Servic ...
- 【AngularJS中的自定义服务service VS factory VS provider】---它们的区别,你知道么?
在介绍AngularJS自定义服务之前,我们先来了解一下AngularJS~ 学过HTML的人都知道,HTML是一门很好的伪静态文本展示设计的声明式语言,但是,要构建WEB应用的话它就显得乏力了. 而 ...
- [后端人员耍前端系列]AngularJs篇:30分钟快速掌握AngularJs
一.前言 对于前端系列,自然少不了AngularJs的介绍了.在前面文章中,我们介绍了如何使用KnockoutJs来打造一个单页面程序,后面一篇文章将介绍如何使用AngularJs的开发一个单页面应用 ...
- angularjs中provider,factory,service的区别和用法
angularjs中provider,factory,service的区别和用法 都能提供service,但是又有差别 service 第一次被注入时实例化,只实例化一次,整个应用的生命周期中是个单例 ...
- [AngularJS] 使用AngularAMD动态加载Service
[AngularJS] 使用AngularAMD动态加载Service 前言 「使用AngularAMD动态加载Controller」:这篇文章里介绍如何使用AngularAMD来动态加载Contro ...
- AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记) 前言 在"AngularJS项目开发技巧之图片预加载" ...
- AngularJS学习之旅—AngularJS 服务(八)
1.AngularJS 服务(Service) AngularJS 中你可以创建自己的服务,或使用内建服务.2.什么是服务? 在 AngularJS 中,服务是一个函数或对象,可在你的 Angular ...
随机推荐
- imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区
在oracle里创建表,报出错: ORA-01658: 无法为表空间space中的段创建 INITIAL 区: 或者: ORA-01658: unable to create INITIAL exte ...
- [转]SQLServer添加UPDATE回滚日志(update/delete/insert)
下面直接上代码(copy到你的数据库里面直接就可以运行): CREATE PROCEDURE [dbo].[SP_UPDATE_LOG] ) AS BEGIN SET NOCOUNT ON; IF N ...
- spring 项目返回406
406 The resource identified by this request is only capable of generating responses with characteris ...
- 【bzoj2186】[Sdoi2008]沙拉公主的困惑
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3303 Solved: 1129[Submit][S ...
- Linux 安装lamp
安装软件包编译器 gcc -v 查看是否存在 yum -y install gcc gcc-c++ mack rpm -q httpd 查看是否安装http rpm -e httpd --nodeps ...
- 使用递归函数,输出n个元素的所有子集
题目描述: 请编写一个递归函数,用来输出n个元素的所有子集.例如,三个元素{a,b,c}的所有子集是:{},{a},{b},{c},{a,c},{ac},{b,c},{a,b,c}. 解题思路: 根据 ...
- cocos2D-x demo 的源码分析 #define ..##.. 的妙用.
最近在看cocos2d-x 但不知道如何下手,于是先看一下他编译的完成的testcpp的源码.发现了下面一段程序 typedef CCLayer* (*NEWTESTFUNC)(); #define ...
- SQL CLR学习
SQL CLR (SQL Common Language Runtime) 是自 SQL Server 2005 才出现的新功能,它将.NET Framework中的CLR服务注入到 SQL Serv ...
- 12-scanf("%*s")与printf("%*s")
在scanf里用*修饰符,是起到过滤读入的作用.比如一个有三列数值的数据,我只想得到第2列数值,可以在循环里用scanf(“%*d%d%*d”,a[i])来读入第i行的第2个数值到a[i]. ...
- Apr编程
一.简介 http://www.xuebuyuan.com/2195578.html 二.教程 http://dev.ariel-networks.com/apr/