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操作JSON实例代码
Feb 09 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
Dec 11 Javascript
javascript监听页面刷新和页面关闭事件方法详解
Jan 09 Javascript
JS实现浏览器打印、打印预览示例
Feb 28 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
Mar 24 Javascript
基于vue-cli3和element实现登陆页面
Nov 13 Javascript
微信小程序实现吸顶特效
Jan 08 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
用在PHP里的JS打印函数
2006/10/09 PHP
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
python用Configobj模块读取配置文件
2020/09/26 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
sort命令的作用和用法
2013/08/25 面试题
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android