angular 自定义服务

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>
时间: 2024-09-26 00:40:25

angular 自定义服务的相关文章

Angularjs 自定义服务的三种方式(推荐)_AngularJS

AngularJS简介: AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序(SPAs:Single Page Applications). AngularJS 学习起来非常简单. angularjs 中可通过三种($provider,$factory,$service)方式自定义服务,以下是不同的实现形式: // 定义module , module中注入$provide var starterApp = angular.module('

angularjs中factory,service,provider 自定义服务的不同

一,factory,service,provider自定义服务,services.js  代码如下 复制代码 'use strict'; /* Services */ var phonecatServices = angular.module('phonecatServices', []); phonecatServices.factory('facetorytest', ['$window',         //factory方式     function($window){        

AngularJS自定义服务与fliter的混合使用_AngularJS

angular中,Filter是用来格式化数据用的,比如项目中,有很多时候从后台拿来的数据直接显示用书是不明白其含义的,这时候我们需要自己格式化一下后再显示在界面上,传统的j我们需要些一长串代码,各种影射,而angular给我们提供的filter,确实要简介很多. 下面给大家介绍下angularJS自定义服务与fliter的混合使用,一起看看吧.  1. 创建自定义服务"$swl" var app = angular.module('myApp', []); app.service(&

简述angular自定义过滤器在页面和控制器中的使用_Android

AngularJS另一个特点就是提供了过滤器,可以通过操作UNIX下管道的方式,操作数据结果. 通过使用管道,可以便于双向的数据绑定中视图的展现. 过滤器在处理过程中,将数据变成新的格式,而且可以使用管道这种链式风格,还能接受附加的参数. 首先设置自定义过滤器. 定义模块名:angular .module('myApp') .filter('filterName',function(){ return function(要过滤的对象,参数1,参数2,...){ return Obj; //这里返

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

Android实现在ServiceManager中加入自定义服务的方法详解

本文实例讲述了Android实现在ServiceManager中加入自定义服务的方法.分享给大家供大家参考,具体如下: 当我们要使用android的系统服务时,一般都是使用Context.getSystemService方法.例如我们要获取AudioManager,我们可以: AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 获取的服务,其实是在ServiceManager中注册的Binder服务,

AngularJS 自定义服务

angular中的service叫做服务,用来封装常用的函数.就像java中的Util类一样. 定义 以PathUtil服务为例,定义见下: 'use strict'; /** * url的前缀固定,后缀会变,所以封装成服务,减少代码量 */ angular.module('myApp') .service('PathUtil', function PathUtil() { var rootPath = 'http://127.1.2.3/CepWebservice/'; this.getUrl

.NET自定义服务意外停止

问题描述 之前用C#2003写了个服务运行,是处理数据库中的数据.后来发现服务有时候会自己意外停止,这个停止的时间还不一定.并且更为郁闷的是在系统日志中找不到任何相关的错误信息.因此也无从下手判断问题在哪.这个服务里面有用到线程,以及Threading.Timer,但是在这些外围我都有加了trycatch进行错误捕获,并且写自己的日志.但是每次意外重启,都没有任何信息.请教各位大大,有没发生过类似问题,或者根据经验,会是什么情况导致?谢谢 解决方案 解决方案二:查你自己的log呢?IServic

AngularJS创建自定义指令的方法详解_AngularJS

本文实例讲述了AngularJS创建自定义指令的方法.分享给大家供大家参考,具体如下: 这是一篇译文,来自angular开发者说明的指令.主要面向已经熟悉angular开发基础的开发者.这篇文档解释了什么情况下需要创建自己的指令,和如何去创建指令. 什么是指令 从一个高的层面来讲,指令是angular $compile服务的说明,当特定的标签(属性,元素名,或者注释) 出现在DOM中的时候,它让编译器附加指定的行为到DOM上. 这个过程是很简单的.angular内部有很用这样自带的指令,比如说n