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标签, ...
随机推荐
- JAVA_Package
Javaの名前空間の仕組みの1つにパッケージがあります.大規模開発では必須の概念です.また.他人の作ったコードの再利用という観点でも.パッケージを正しく活用する必要があります. ・完全修飾名:パッケー ...
- Jenkins:管理节点
Jenkins 管理节点 是管理所有即将在其上执行任务(JOB)的slave机器,包括各种OS类型的主机,都可以作为节点,因为Jenkins是java实现的,所以能安装JVM的OS都可以作为Jenki ...
- 转:jquery操作元素的css样式(获取、修改等等)
//1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#two").attr(&qu ...
- 转: JQuery this和$(this)的区别及获取$(this)子元素对象的方法
1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的 $() 这 ...
- delphi 实现用户自定义通知(User Notification)
unit Form_Main; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Sy ...
- httpClient服务端编写
以前用过HttpClient,给你说几个关键的地方吧: 1. 首先,发送的时候 HttpClient client = new HttpClient(); PostMethod method = ne ...
- Swift中的的注释
1. Swift支持与OC中相同的 /**/ ./***/ 不同点Swift支持 /*/**/ 这样的注释 ,多行注释 2. 直接双杠注释 // 单行注释 3. 利用 //MARK: 返 ...
- PowerDesigner 修改table背景色
Tools->Display Preferences(显示参数选择)->Format->Table->Modify->Fill->Fill color 出处:htt ...
- Pandas分类
Pandas分类 categorical data是指分类数据:数据类型为:男女.班级(一班.二班).省份(河北.江苏等),若使用赋值法给变量赋值,例如(男=1,女=0),数字1,0之间没有大小之分, ...
- NYOJ20-吝啬的国度-图-dfs
20-吝啬的国度 内存限制:64MB时间限制:1000ms特判: No 难度:3 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...