AngularJS——第8章 服务
第8章 服务
服务是一个对象或函数,对外提供特定的功能。
8.1 内建服务
1. $location是对原生Javascript中location对象属性和方法的封装。
// $location内置服务
// AngularJS 专门提供了一个帮你获URL地址一个服务
App.controller('DemoController', ['$scope', '$location', function($scope, $location) {
$scope.title = '学习$location服务';
// $location就是angularJS提前封装好的
// 提供获取地址相关信息的服务
// console.log($location);
//绝对路径
$scope.absUrl = $location.absUrl();
//相对路径
$scope.url = $location.url();
//主页
$scope.host = $location.host();
//查询字符串
$scope.search = $location.search();
//哈希值
$scope.hash = $location.hash();
//协议
$scope.protocol = $location.protocol();
//端口
$scope.port = $location.port();
}]);
2. $timeout&$interval对原生Javascript中的setTimeout和setInterval进行了封装。
//注入声明依赖
App.controller('DemoController', ['$scope', '$timeout', '$intervall', function($scope, $timeout, $interval){
$timeout(function(){
$scope.time = new Date();
}, 2000);
$interval(function(){
$scope.time = new Date();
}, 1000);
}]);
3. $filter在控制器中格式化数据。
//使用过滤器服务
App.controller('DemoController', ['$scope', '$filter', function ($scope, $filter) {
//原始信息
$scope.content = 'my name is angular';
//创建过滤器
var uppercase = $filter('uppercase');
//格式化数据
$scope.content = uppercase($scope.content);
}]);
4. $log打印调试信息
//使用日志服务
App.controller('DemoController', ['$scope', '$log', function(){
$log.log('日志');
$log.info('信息');
$log.warn('警告');
$log.error('错误');
$log.debug('调试');
}]);
5. $http用于向服务端发起异步请求
//使用$http服务
App.controller('DemoController', ['$scope', '$http', '$log', function ($scope, $http, $log) {
//发起异步请求
$http({
method: 'post', //请求方式
url: 'example.php', //请求地址
data: {name: 'angular', age: 10}, //请求主体
headers: { //请求头信息
'Content-Type': 'application/x-www-form-urlencoded'
},
}).success(function (data, states, headers, config) {
//success code
}).error(function(data, states, headers, config){});
//失败回调
}]);
- 同时还支持多种快捷方式如$http.get()、$http.post()、$http.jsonp。
- 注:各参数含义见代码注释。
8.2 自定义服务
通过上面例子得知,所谓服务是将一些通用性的功能逻辑进行封装方便使用,AngularJS允许将自定义服务。
1. factory方法
//自定义服务显示日期
App.factory('showTime', ['$filter', function($filter){
var now = new Date();
now = $filter('date')(now, 'yyyy/MM/dd');
return now;
}]);
//声明依赖调用服务
App.controller('DemoController', ['$scope','showTime', function($scope, showTime){
$scope.now = showTime;
}]);
2. service方法
//自定义服务显示日期
App.service('showTime', ['$filter', function($filter){
var now = new Date();
this.now = $filter('date')(now, 'yyyy/MM/dd');
return now;
}]);
//声明依赖调用服务
App.controller('DemoController', ['$scope','showTime', function($scope, showTime){
$scope.now = showTime;
}]);
3. value方法定义常量
//自定义常量服务
App.value('author', 'angular');
//声明依赖调用服务
App.controller('DemoController', ['$scope', 'author', function($scope, auther){
$scope.author = author;
}]);
- 在介绍服务时曾提到服务本质就是一个对象或函数,所以自定义服务就是要返回一个对象或函数以供使用。
AngularJS——第8章 服务的更多相关文章
- 【AngularJS中的自定义服务service VS factory VS provider】---它们的区别,你知道么?
在介绍AngularJS自定义服务之前,我们先来了解一下AngularJS~ 学过HTML的人都知道,HTML是一门很好的伪静态文本展示设计的声明式语言,但是,要构建WEB应用的话它就显得乏力了. 而 ...
- X32位 天堂2 二章/三章 服务端协议号修改方法
[本方法适合于2004-2006年之间天堂2由初章服务端修改至二章.三章端时协议号匹配问题]服务端版本位32位初章服务端 目前大部分SF用的协议号情况: 服务端是419 客户端是 417 419 42 ...
- 【Android】17.0 第17章 服务绑定—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-03-03 一.简介 通过服务绑定(Bound Services),可以轻松实现后台服务与界面(UI)的交互. 二.本章示例主界面 1. ...
- AngularJS——第9章 模块加载
第9章 模块加载 AngularJS模块可以在被加载和执行之前对其自身进行配置.我们可以在应用的加载阶段配置不同的逻辑. [AngularJS执行流程] 启动阶段(startup) 开始 --> ...
- AngularJS——第7章 依赖注入
第7章 依赖注入 AngularJS采用模块化的方式组织代码,将一些通用逻辑封装成一个对象或函数,实现最大程度的复用,这导致了使用者和被使用者之间存在依赖关系. 所谓依赖注入是指在运行时自动查找依赖关 ...
- AngularJS——第4章 数据绑定
第4章 数据绑定 AngularJS是以数据做为驱动的MVC框架,所有模型(Model)里的数据经由控制器(Controller)展示到视图(View)中. 所谓数据绑定指的就是将模型(Model)中 ...
- AngularJS中实现日志服务
本篇体验使用AngularJS自定义一个记录日志的服务. 在AngularJS中,服务的一些写法是这样的: var app = angular.module('app',[]); app.provid ...
- angularJS中如何写服务
服务的用途 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性 服务提供了把特定功能相关联的方法集中在一起的接口 如何创建服务 angularJS ...
- AngularJS 不得不了解的服务 $compile 用于动态显示html内容
项目中一度纠结与AngularJS如何动态显示不同的html内容. 本来是希望直接使用下面的语句来实现: <div> </div> 但是很尴尬的是,这样不能识别出html标签, ...
随机推荐
- javascript_ajax 地址三级联动
1.三级地址联动思路如下: 2.建立数据库.这里直接使用网上的地址数库,最后一个字段无用,先不去管它 3.建立一个server.php 文件 <?php // 数据库连接 mysql_conne ...
- Unable to connect to zookeeper server within timeout: 5000
错误 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error crea ...
- HTML页面3秒后自动跳转的三种常见方法
在练习中,我们常常遇到一种问题就是,怎么实现页面N秒之后自动跳转呢? 我自己遇到问题和查找资料,总结了3个方法 方法1: 最简单的一种:直接在前面<head>里面添加代码: 复制代码 代 ...
- How to Pronounce TH after N or Z
How to Pronounce TH after N or Z Share Tweet Share Tagged With: Linking Consonant to Consonant The T ...
- 16进制转ascii,转字符串
/** * 16进制转化为字母 * @param hex 要转化的16进制数,用逗号隔开 * 如:53,68,61,64,6f,77 * @return */ public static String ...
- 26.如何使用python操作我们自己创建的docker image呢?
因为逻辑复杂 我们建个文件来 python #是单行注释 '''是多行注释 或者””” 我们想使用python来操作docker 那么就要一个api https://github.com/docker ...
- editable : false与 readonly 的区别
editable : false 不能输入 readonly:不可操作,只能看
- TMG2010安装配置细节设定
TMG2010最适合的操作系统是Win2008R2,不支持Win2012,可能是因为发布Win2012系统时,微软已经决定废弃TMG改为支持UAG了吧. 在Win2012下安装TMG2010,运行TM ...
- HDFS中的集中缓存管理详解
一.背景 Hadoop设计之初借鉴GFS/MapReduce的思想:移动计算的成本远小于移动数据的成本.所以调度通常会尽可能将计算移动到拥有数据的节点上,在作业执行过程中,从HDFS角度看,计算和数据 ...
- redis集群实战
一.说明 redis 3.0集群功能出来已经有一段时间了,目前最新稳定版是3.0.5,我了解到已经有很多互联网公司在生产环境使用,比如唯品会.美团等等,刚好公司有个新项目,预估的量单机redis无法满 ...