AngularJS 服务(Service)

AngularJS 服务(Service)

AngularJS 中你可以创建自己的服务,或使用内建服务。


什么是服务?

在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用。

AngularJS 内建了30 多个服务。

有个 $location 服务,它可以返回当前页面的 URL 地址。

实例

var app = angular.module( 'myApp', []);
app.controller( 'customersCtrl'function($scope, $location) {
    $scope.myUrl = $location.absUrl();
});

尝试一下 »

注意 $location 服务是作为一个参数传递到 controller 中。如果要使用它,需要在 controller 中定义。


为什么使用服务?

$http 是 AngularJS 应用中最常用的服务。服务向服务器发送请求,应用响应服务器传送过来的数据。

AngularJS 会一直监控应用,处理事件变化, AngularJS 使用 $location 服务比使用 window.location 对象更好。


$http 服务

$http 是 AngularJS 应用中最常用的服务。 服务向服务器发送请求,应用响应服务器传送过来的数据。

实例

使用 $http 服务向服务器请求数据:

var app = angular.module( 'myApp', []);
app.controller( 'myCtrl'function($scope, $http) {
    $http.get( "welcome.htm").then( function (response) {
        $scope.myWelcome = response.data;
    });
});

尝试一下 »

以上是一个非常简单的 $http 服务实例,更多 $http 服务应用请查看 AngularJS Http 教程


$timeout 服务

AngularJS $timeout 服务对应了 JS window.setTimeout 函数。

实例

两秒后显示信息:

var app = angular.module( 'myApp', []);
app.controller( 'myCtrl'function($scope, $timeout) {
    $scope.myHeader =  "Hello World!";
    $timeout( function () {
        $scope.myHeader =  "How are you today?";
    },  2000);
});

尝试一下 »

$interval 服务

AngularJS $interval 服务对应了 JS window.setInterval 函数。

实例

每两秒显示信息:

var app = angular.module( 'myApp', []);
app.controller( 'myCtrl'function($scope, $interval) {
    $scope.theTime =  new Date().toLocaleTimeString();
    $interval( function () {
        $scope.theTime =  new Date().toLocaleTimeString();
    },  1000);
});

尝试一下 »

创建自定义服务

你可以创建自定义的访问,链接到你的模块中:

创建名为hexafy 的访问:

app.service( 'hexafy'function() {
    this.myFunc =  function (x) {
         return x.toString( 16);
    }
});

要使用自定义的访问,需要在定义过滤器的时候独立添加:

实例

使用自定义的的服务 hexafy 将一个数字转换为16进制数:

app.controller( 'myCtrl'function($scope,  hexafy) {
    $scope.hex =  hexafy.myFunc( 255);
});

尝试一下 »

过滤器中,使用自定义服务

当你创建了自定义服务,并连接到你的应用上后,你可以在控制器,指令,过滤器或其他服务中使用它。

在过滤器 myFormat 中使用服务 hexafy:

app.filter( 'myFormat',[ 'hexify'function( hexify) {
     return  function(x) {
         return  hexify.myFunc(x);
    };
}]);

尝试一下 »

在对象数组中获取值时你可以使用过滤器:

创建服务 hexafy:

< ul >
< li  ng-repeat= "x in counts" > {{x | myFormat}} < /li >
< /ul >

尝试一下 »
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晓LOVE向阳

你的鼓励是我持续的不断动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值