AngularJS 服务详细讲解及示例代码


Posted in Javascript onAugust 17, 2016

AngularJS支持使用服务的体系结构“关注点分离”的概念。服务是JavaScript函数,并负责只做一个特定的任务。这也使得他们即维护和测试的单独实体。控制器,过滤器可以调用它们作为需求的基础。服务使用AngularJS的依赖注入机制注入正常。

AngularJS提供例如许多内在的服务,如:$http, $route, $window, $location等。每个服务负责例如一个特定的任务,$http是用来创建AJAX调用,以获得服务器的数据。 $route用来定义路由信息等。内置的服务总是前缀$符号。

有两种方法来创建服务。

工厂

服务

使用工厂方法

使用工厂方法,我们先定义一个工厂,然后分配方法给它。

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 服务详细讲解及示例代码

以上就是对AngularJS 服务的基础资料整理,后续继续整理相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 Javascript
uploadify在Firefox下丢失session问题的解决方法
Aug 07 Javascript
JavaScript实现的石头剪刀布游戏源码分享
Aug 22 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
Aug 21 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
jquery Deferred 快速解决异步回调的问题
Apr 05 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
vue实现密码显示隐藏切换功能
Feb 23 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
node实现的爬虫功能示例
May 04 Javascript
小试SVG之新手小白入门教程
Jan 08 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 #Javascript
AngularJS 作用域详解及示例代码
Aug 17 #Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 #Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 #Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 #Javascript
Node.js中使用jQuery的做法
Aug 17 #Javascript
学习Angular中作用域需要注意的坑
Aug 17 #Javascript
You might like
zend api扩展的php对象的autoload工具
2011/04/18 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
jQuery最佳实践完整篇
2011/08/20 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
SQLite3中文编码 Python的实现
2017/01/11 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
期中考试后的反思
2014/02/08 职场文书
职业生涯规划书前言
2014/04/15 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
认购协议书范本
2014/04/22 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
python cv2图像质量压缩的算法示例
2021/06/04 Python
详解Vue的列表渲染
2021/11/20 Vue.js