简介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 Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 Javascript
最佳的addEvent事件绑定是怎样诞生的
Oct 24 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
extjs每个组件要设置唯一的ID否则会出错
Jun 15 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
用jQuery的AJax实现异步访问、异步加载
Nov 02 Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
JS轮播图的实现方法2
Aug 25 Javascript
JS的深浅复制详细
Oct 16 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制作静态网站的模板框架
2006/10/09 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python实现抖音视频批量下载
2018/06/20 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
Python中遍历列表的方法总结
2019/06/27 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
个人委托书范本
2014/09/13 职场文书
大学生入党自荐书
2015/03/05 职场文书
物资采购管理制度
2015/08/06 职场文书
交通安全主题班会
2015/08/12 职场文书
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS