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源码学习javascript(三)
Dec 27 Javascript
jQuery控制TR显示隐藏的几种方法
Jun 18 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
Aug 27 Javascript
详解ECharts使用心得总结
Dec 06 Javascript
解析利用javascript如何判断一个数为素数
Dec 08 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
vue-ajax小封装实例
Sep 18 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
Aug 30 Javascript
angular6 填坑之sdk的方法
Dec 27 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
vue打包npm run build时候界面报错的解决
Aug 13 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中的日期及时间
2006/11/23 PHP
基于pear auth实现登录验证
2010/02/26 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
vuex实现数据状态持久化
2019/11/11 Javascript
React实现全选功能
2020/08/25 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
Python如何读取、写入JSON数据
2020/07/28 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
教学大赛获奖感言
2014/01/15 职场文书
医院工作检讨书范文
2014/02/10 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
统计学教授推荐信
2014/09/18 职场文书
2015年药房工作总结
2015/04/25 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
行政二审代理词
2015/05/25 职场文书
导游词之介休绵山
2019/12/31 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python