简介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 相关文章推荐
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
浅析JavaScript中的CSS属性及命名规范
Nov 28 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
微信小程序教程系列之新建页面(4)
Apr 17 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
解决linux下node.js全局模块找不到的问题
May 15 Javascript
详解js根据百度地图提供经纬度计算两点距离
May 13 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 date与gmdate的获取日期的区别
2010/02/08 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
优化PHP程序的方法小结
2012/02/23 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
Python日期的加减等操作的示例
2017/08/15 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
golang/python实现归并排序实例代码
2020/08/30 Python
python 读取串口数据的示例
2020/11/09 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
演讲稿祖国在我心中
2014/05/04 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers