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 相关文章推荐
javascript作用域和闭包使用详解
Apr 25 Javascript
js动态添加表格数据使用insertRow和insertCell实现
May 22 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
Angular4学习笔记之根模块与Ng模块
Sep 09 Javascript
浅谈Koa服务限流方法实践
Oct 23 Javascript
浅谈React中组件间抽象
Jan 27 Javascript
js中的 || 与 &amp;&amp; 运算符详解
May 24 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
Oct 10 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
深入理解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
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
js计算页面刷新的次数
2009/07/20 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
青年安全生产示范岗事迹材料
2014/05/04 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP