AngularJS 服务详细讲解及示例代码


Posted in Javascript onAugust 17, 2016

AngularJS支持使用服务的体系结构“关注点分离”的概念。服务是JavaScript函数,并负责只做一个特定的任务。这也使得他们即维护和测试的单独实体。控制器,过滤器可以调用它们作为需求的基础。服务使用AngularJS的依赖注入机制注入正常。

AngularJS提供例如许多内在的服务,如:$http, $route, $window, $location等。每个服务负责例如一个特定的任务,$http是用来创建AJAX调用,以获得服务器的数据。 $route用来定义路由信息等。内置的服务总是前缀$符号。

有两种方法来创建服务。

工厂

服务

使用工厂方法

使用工厂方法,我们先定义一个工厂,然后分配方法给它。

var mainApp = angular.module("mainApp", []);
   mainApp.factory('MathService', function() {   
     var factory = {}; 
     factory.multiply = function(a, b) {
      return a * b 
     }
     return factory;
   });

使用服务方法

使用服务的方法,我们定义了一个服务,然后分配方法。还注入已经可用的服务。

mainApp.service('CalcService', function(MathService){
  this.square = function(a) { 
		return MathService.multiply(a,a); 
	}
});

例子

下面的例子将展示上述所有指令。

testAngularJS.html

<html>
<head>
  <title>Angular JS Forms</title>
</head>
<body>
  <h2>AngularJS Sample Application</h2>
  <div ng-app="mainApp" ng-controller="CalcController">
   <p>Enter a number: <input type="number" ng-model="number" />
   <button ng-click="square()">X<sup>2</sup></button>
   <p>Result: {{result}}</p>
  </div>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
  <script>
   var mainApp = angular.module("mainApp", []);
   mainApp.factory('MathService', function() {   
     var factory = {}; 
     factory.multiply = function(a, b) {
      return a * b 
     }
     return factory;
   }); 

   mainApp.service('CalcService', function(MathService){
      this.square = function(a) { 
      return MathService.multiply(a,a); 
     }
   });

   mainApp.controller('CalcController', function($scope, CalcService) {
      $scope.square = function() {
      $scope.result = CalcService.square($scope.number);
     }
   });
  </script>
</body>
</html>

结果

在Web浏览器打开textAngularJS.html。看到结果如下。

AngularJS 服务详细讲解及示例代码

以上就是对AngularJS 服务的基础资料整理,后续继续整理相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
Jun 20 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
Oct 23 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
论JavaScript模块化编程
Mar 07 Javascript
js获取元素的偏移量offset简单方法(必看)
Jul 05 Javascript
ejsExcel模板在Vue.js项目中的实际运用
Jan 27 Javascript
JavaScript实现的DOM绘制柱状图效果示例
Aug 08 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
工作中常用js功能汇总
Nov 07 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 #Javascript
AngularJS 作用域详解及示例代码
Aug 17 #Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 #Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 #Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 #Javascript
Node.js中使用jQuery的做法
Aug 17 #Javascript
学习Angular中作用域需要注意的坑
Aug 17 #Javascript
You might like
各种咖啡的英文名子是什么
2021/03/03 新手入门
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
Python递归函数特点及原理解析
2020/03/04 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
python -v 报错问题的解决方法
2020/09/15 Python
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
自我鉴定 电子商务专业
2014/01/30 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
高中生旷课检讨书
2014/10/08 职场文书
2014司机年终工作总结
2014/12/05 职场文书
导游词300字
2015/02/13 职场文书
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP