简介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 相关文章推荐
xml 与javascript结合的问题解决方法
Mar 24 Javascript
javascript 获取网页参数系统
Jul 19 Javascript
js实现兼容IE和FF的上下层的移动
May 04 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
Oct 19 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
javascript实现一款好看的秒表计时器
Sep 05 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取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
php源码的安装方法和实例
2019/09/26 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python3的输入方式及多组输入方法
2018/10/17 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
毕业生个人的求职信范文
2013/12/03 职场文书
业务部经理岗位职责
2014/01/04 职场文书
文明学生事迹材料
2014/01/29 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
流动人口婚育证明
2014/10/19 职场文书
广告业务员岗位职责
2015/02/13 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript