简介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 相关文章推荐
javascript显示隐藏层比较不错的方法分析
Sep 30 Javascript
javascript 从if else 到 switch case 再到抽象
Jul 17 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
15款jQuery分布引导插件分享
Feb 04 Javascript
AngularJS中的Directive实现延迟加载
Jan 25 Javascript
jQuery 生成svg矢量二维码
Aug 09 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
Jan 18 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 Javascript
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
简介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中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
PHP crc32()函数讲解
2019/02/14 PHP
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Farnell德国:电子元器件供应商
2018/07/10 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
如何写毕业求职自荐信
2013/11/06 职场文书
青奥会口号
2014/06/12 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
刑事附带民事代理词
2015/05/25 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
2016年党建工作简报
2015/11/26 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python