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 replace()正则替换实现代码
Feb 26 Javascript
利用Keydown事件阻止用户输入实现代码
Mar 11 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 Javascript
jQuery增加与删除table列的方法
Mar 01 Javascript
jquery 中toggle的2种用法详解(推荐)
Sep 02 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
微信小程序数字滚动插件使用详解
Feb 02 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 Javascript
利用JavaScript为句子加标题的3种方法示例
Jan 05 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
工商管理应届生求职信
2013/10/07 职场文书
设备管理实施方案
2014/05/31 职场文书
工程售后服务方案
2014/06/08 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
2014年药店工作总结
2014/11/20 职场文书
旷课检讨书范文
2015/01/27 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
Python开发五子棋小游戏
2022/05/02 Python