简介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延迟加载外部js实现代码
Jan 11 Javascript
jquery与js函数冲突的两种解决方法
Sep 09 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
Oct 28 Javascript
JS动态添加Table的TR,TD实现方法
Jan 28 Javascript
jquery mobile 移动web(5)
Dec 20 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
Vue from-validate 表单验证的示例代码
Sep 26 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
安装Node.js并启动本地服务的操作教程
May 12 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 Javascript
uniapp 微信小程序 自定义tabBar 导航
Apr 22 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
php生成缩略图的类代码
2008/10/02 PHP
PHP 文件类型判断代码
2009/03/13 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
python实现多层感知器
2019/01/18 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
python多线程http压力测试脚本
2019/06/25 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
护士辞职信范文
2014/01/19 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
公务员个人总结
2015/02/12 职场文书
医院合作意向书范本
2015/05/08 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
Django migrate报错的解决方案
2021/05/20 Python
Python访问Redis的详细操作
2021/06/26 Python