简介AngularJS中使用factory和service的方法


Posted in Javascript onJune 17, 2015

 AngularJS支持使用服务的体系结构“关注点分离”的概念。服务是JavaScript函数,并负责只做一个特定的任务。这也使得他们即维护和测试的单独实体。控制器,过滤器可以调用它们作为需求的基础。服务使用AngularJS的依赖注入机制注入正常。

AngularJS提供例如许多内在的服务,如:$http, $route, $window, $location等。每个服务负责例如一个特定的任务,$http是用来创建AJAX调用,以获得服务器的数据。 $route用来定义路由信息等。内置的服务总是前缀$符号。

有两种方法来创建服务。

  1.     工厂
  2.     服务

使用工厂方法

使用工厂方法,我们先定义一个工厂,然后分配方法给它。

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中使用factory和service的方法

Javascript 相关文章推荐
IE 条件注释详解总结(附实例代码)
Aug 29 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
Dec 20 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
实例浅析js的this
Dec 11 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 Javascript
简介AngularJS的视图功能应用
Jun 17 #Javascript
在AngularJS中使用AJAX的方法
Jun 17 #Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 #Javascript
AngularJS的表单使用详解
Jun 17 #Javascript
举例讲解AngularJS中的模块
Jun 17 #Javascript
简介AngularJS的HTML DOM支持情况
Jun 17 #Javascript
在Ubuntu系统上安装Ghost博客平台的教程
Jun 17 #Javascript
You might like
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php中smarty区域循环的方法
2015/06/11 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
js随机生成一个验证码
2017/06/01 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
使用python分析git log日志示例
2014/02/27 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
深入理解python中的select模块
2017/04/23 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
失业者真诚求职信范文
2013/12/25 职场文书
先进集体获奖感言
2014/02/13 职场文书
教师求职信范文
2014/05/24 职场文书
工作总结与自我评价
2014/09/18 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
新年寄语2016
2015/08/17 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
python unittest单元测试的步骤分析
2021/08/02 Python