一、angularJs中的简单服务应用

下面的例子让我们明白在AngularJs中如何去调用文件中的数据,从而将文件中的数据显示在页面上;改变url的地址,也可以去调用后台接口.

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body ng-app="myApp" ng-controller="LoadDataCtrl">
<ul >
<li ng-repeat="user in users">
{{user.name}}
</li>
</ul>
</body>
<script type="text/javascript" src="js/angular.js" ></script>
<script type="text/javascript" src="js/http.js" ></script> </html>

http.js

var myModule=angular.module("myApp",[]);
//myModule.controller('LoadDataCtrl',['$scope','$http',function($scope){
myModule.controller('LoadDataCtrl',function($scope,$http){
$http({
method:'GET',
url:'js/data.json'
}).success(function(data,status,headers,config){
console.log("success...");
console.log(data);
$scope.users=data;
}).error(function(data,status,headers,config){
console.log("error...");
});
});

data.json:

html运行结果:

二、创建自定义服务(我们自己的服务)

明白两点:

1.如何注册服务

2.如何使用服务

完整的实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body ng-app="MyServiceApp" ng-controller="ServiceController">
用户名:<input type="text" ng-model="username" placeholder="请输入用户名">
<ul >
<li ng-repeat="user in users">
{{user.name}}
</li>
</ul>
</body>
<script type="text/javascript" src="js/angular.js" ></script>
<script type="text/javascript" src="js/service.js" ></script> </html>

service.js:

var myServiceApp = angular.module("MyServiceApp",[]);
myServiceApp.factory('userListService',function($http){
var doRequest = function(username,path){
return $http({
method: 'GET',
url:'js/data.json'
});
};
return {
userList: function(username) {
return doRequest(username,'userList');
}
};
}); myServiceApp.controller("ServiceController",function($scope,$timeout,userListService){
var timeout;
$scope.$watch('username',function(newUserName) {
if(newUserName){
if(timeout){
$timeout.cancel(timeout);
} timeout = $timeout(function() {
userListService.userList(newUserName)
.success(function(data,status) {
$scope.users = data;
});
},350);
}
});
});

data.json:

运行html文件的结果:

初始状态:

文本框中输入值回车后如下:

最常用的是使用factory的方式,这里主要总结factory创建服务的方式,以上面的例子为例.

详细分析:

1.创建服务的方式

2.注册服务

用angular.module api创建了一个名字叫userListService的服务,服务的工厂函数用来生成一个单例的对象或函数,这个对象或函数就是服务,它会存在于应用的整个生命周期内.

上面的例子中将方法设置为服务对象的一个属性将其暴露给外部(上面的例子中工厂函数包含一个方法返回一个promise,最后return一个userList函数的服务对象).

3.使用服务

当服务的名字当作参数传递给控制器函数,就可以将服务注入到控制器中;即当服务成了某个控制器的依赖,就可以在控制器中调用任何定义在服务对象上的方法.

注: 同创建控制器一样工厂函数即可以是一个函数,也可以是一个数组.

 

AngularJs中的服务的更多相关文章

  1. 怎么理解angularjs中的服务?

    AngularJS中的服务其实就是提供一种方式抽取共用类库 比如说一些工具类方法,我们传统的做法就是自己写个 utility 类,把相关的工具方法填充到utility里面去,最后把utility类放到 ...

  2. AngularJS中实现服务端分页

    这个教程将介绍在AngularJS应用中的服务端分页处理.在任何涉及到列表或表格数据的应用中都可能会用到分页. 概念 当我们处理异步分页时,每次只从服务器上获取一页数据.也就是说当用户点击第二页,就只 ...

  3. AngularJS中$http服务的简单用法

    我们可以使用内置的$http服务直接同外部进行通信.$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象. 1.链式调用 $http服务是只能接受一个参数的函数,这个参数是一个对 ...

  4. $q -- AngularJS中的服务(理解)

      描述 译者注: 看到了一篇非常好的文章,如果你有兴趣,可以查看: Promises与Javascript异步编程 , 里面对Promises规范和使用情景,好处讲的非常好透彻,个人觉得简单易懂. ...

  5. $q -- AngularJS中的服务

    此 承诺/延迟(promise/deferred)实现 的灵感来自于 Kris Kowal's QCommonJS Promise建议文档 将承诺(promise) 作为和 异步执行操作(action ...

  6. AngularJS中实现日志服务

    本篇体验使用AngularJS自定义一个记录日志的服务. 在AngularJS中,服务的一些写法是这样的: var app = angular.module('app',[]); app.provid ...

  7. AngularJs之六(服务)

    服务:AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用.AngularJS 内建了30 多个服务. 最常用的服务:$location  服务,  $http 服务 ...

  8. angularJS中的Promise对象($q)的深入理解

    原文链接:a better way to learn AngularJS - promises AngularJS通过内置的$q服务提供Promise编程模式.通过将异步函数注册到promise对象, ...

  9. AngularJS内建服务以及自定义服务的用法

    在AngularJS中, 服务是一个比较重要的部分,它是一个对象或者是函数,可以在你的AngularJS的应用中使用.接下来介绍几种比较常用的内建服务以及自定义服务的方法. [内建服务] (1)loc ...

随机推荐

  1. 单元测试-代码覆盖率工具 -- JaCoCo

    最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 随着敏捷开发的流行,编写单元测试已经成为业界共识.但如何来衡量单元测试的质量呢?有些管理者片面追求单元 ...

  2. 读metronic文档学到的几个知识点

    1.RTL  同样的页面,它做了两套.为什么,因为在这个世界上,有些民族,有些语种,是从右向左来的. 2. google material design 同样的一套东西,又分别做了google mat ...

  3. (转)Hadoop数据类型

    来源: http://www.cnblogs.com/anny-1980/articles/2608097.html BooleanWritable:标准布尔型数值 ByteWritable:单字节数 ...

  4. MySQL备份的shell脚本

    经过测试该脚本可以远程备份,但需要配置远程登录用户的权限,经过测试啊,在把这个脚本添加到计划任务的时候是无法识别mysql命令的(即使是将mysql添加到环境变量也无法识别,是因为/etc/cront ...

  5. phpwind数据同步本地后登陆异常

    在讲数据同步到本地之后,发现输入用户名和密码之后点击登陆,依然会返回到之前的页面,并且显示的还是未登录的状态. 解决办法:在后台中将:站点设置--cookie作用域留空即可.

  6. HDU-5781 ATM Mechine(概率DP)

    题目大意:某个未知整数x等概率的分布在[0,k]中.每次你都可以从这个整数中减去一个任意整数y,如果x>=y,那么x=x-y,操作次数累计加1:否则,将会受到一次错误提示.当错误提示超过w次,将 ...

  7. hdu5442(2015长春赛区网络赛1006)后缀数组+KMP /最小表示法?

    题意:给定一个由小写字母组成的长度为 n 的字符串,首尾相连,可以从任意一个字符开始,顺时针或逆时针取这个串(长度为 n),求一个字典序最大的字符串的开始字符位置和顺时针或逆时针.如果有多个字典序最大 ...

  8. debugging tools

    https://blogs.msdn.microsoft.com/debugdiag/ https://blogs.msdn.microsoft.com/debuggingtoolbox/2012/1 ...

  9. linux 安装phpMyAdmin

    1. 首先安装 php mysql  nginx 2. 下载phpMyadmin wget  http://sourceforge.net/projects/phpmyadmin/files/phpM ...

  10. sql server 创建文件组,文件

    添加文件组:  --ADD FILEGROUP 增加文件组 ALTER DATABASE TestHekaton ADD FILEGROUP [Report] ALTER DATABASE TestH ...