简介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 相关文章推荐
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
Javascript 赋值机制详解
Nov 23 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
javascript和jquery实现用户登录验证
May 04 Javascript
简单理解vue中Props属性
Oct 27 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
ReactNative实现图片上传功能的示例代码
Jul 11 Javascript
JavaScript面向对象继承原理与实现方法分析
Aug 09 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
Oct 31 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
Feb 01 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高效率写法(详解原因)
2013/06/20 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
python生成IP段的方法
2015/07/07 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
pandas分组聚合详解
2020/04/10 Python
python删除某个目录文件夹的方法
2020/05/26 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
strstr()的简单实现
2013/09/26 面试题
中学生爱国演讲稿
2013/12/31 职场文书
运动会通讯稿200字
2014/02/16 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
2015年少先队活动总结
2015/03/25 职场文书
2015年派出所工作总结
2015/04/24 职场文书
转正申请报告格式
2015/05/15 职场文书
农村老人去世追悼词
2015/06/23 职场文书
祝寿主持词
2015/07/02 职场文书
员工手册董事长致辞
2015/07/29 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
Python实现视频中添加音频工具详解
2021/12/06 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL