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 相关文章推荐
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
如何使用Javascript获取距今n天前的日期
Jul 08 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
Mar 05 Javascript
js登录弹出层特效
Mar 07 Javascript
学习JavaScript事件流和事件处理程序
Jan 25 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
Mar 25 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 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/02/27 无线电
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
用pycharm开发django项目示例代码
2018/10/24 Python
Python中过滤字符串列表的方法
2020/12/22 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
英国手机零售商:Metrofone
2019/03/18 全球购物
留学自荐信
2013/10/10 职场文书
优秀经理事迹材料
2014/02/01 职场文书
个人违纪检讨书
2014/09/15 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
二胎满月酒致辞
2015/07/29 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
php访问对象中的成员的实例方法
2021/11/17 PHP
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电