AngularJs的服务学习笔记整理

AngularJs的服务

自己写方法是觉得用的挺多的,,$http,$scope..好有好多自己写的,也会用到自定义的一些,下面是我从网上找的一小部分(也不记得从哪里找到的。。)

1、$location服务    

返回当前页面的URL地址
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $location) {
    $scope.myUrl = $location.absUrl();
});


2、$http服务
向服务器发送请求,应用响应服务器传送来的数据
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("welcome.htm").then(function (response) {
        $scope.myWelcome = response.data;
    });
});


3、$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);
});


4、$interval服务
对应js中 window.setInterval函数,定时器
$timeout 可用于设置单次或多次延时服务;
$interval 可用于设置始终运行的延时服务。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $interval) {
    $scope.theTime = new Date().toLocaleTimeString();
    $interval(function () {
        $scope.theTime = new Date().toLocaleTimeString();
    }, 1000);
});


5、$apply服务
用到情况非常少,实际上几乎我们所有的代码都包在scope.apply()里面,像ng−click,controller的初始化,http的回调函数等。
在这些情况下,我们不需要自己调用,实际上我们也不能自己调用,否则在apply()方法里面再调用apply()方法会抛出错误。
如果我们需要在一个新的执行序列中运行代码时才真正需要用到它,而且当且仅当这个新的执行序列不是被angular JS的库的
方法创建的,这个时候我们需要将代码用scope.apply()包起来。
functionCtrl($scope) {
  $scope.message ="Waiting 2000ms for update"; 
  setTimeout(function () {
    $scope.$apply(function () {
       $scope.message ="Timeout called!";
      });
  }, 2000); 
}


6、$watch
持续监听数据上的变化,更新界面
<div ng-app="myApp" ng-controller="myCtrl">
   <b>请输入姓名:</b><br>
   <b>姓:</b><input type="text" ng-model="lastName"><br>
   <b>名:</b><input type="text" ng-model="firstName"><br>
   <h1>{{ lastName + " " + firstName }}</h1>
   <h2>{{ fullName }}</h2>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
   $scope.lastName = "";
   $scope.firstName = "";


   //监听lastName的变化,更新fullName
   $scope.$watch('lastName', function() {
      $scope.fullName = $scope.lastName + " " + $scope.firstName;
   });


   //监听firstName的变化,更新fullName
   $scope.$watch('firstName', function() {
      $scope.fullName = $scope.lastName + " " + $scope.firstName;
   });
});
</script>


7、创建自定义服务
<p>255 的16进制是:</p>


var app = angular.module('myApp', []);


app.service('hexafy', function() {
this.myFunc = function (x) {
        return x.toString(16);
    }
});
app.controller('myCtrl', function($scope, hexafy) {
  $scope.hex = hexafy.myFunc(255);
});




过滤器中使用自定义服务
<div ng-app="myApp" ng-controller="myCtrl">
<p>在获取数组 [255, 251, 200] 值时使用过滤器:</p>


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


<p>过滤器使用服务将10进制转换为16进制。</p>
</div>


<script>
var app = angular.module('myApp', []);
app.service('hexafy', function() {
this.myFunc = function (x) {
        return x.toString(16);
    }
});
app.filter('myFormat',['hexafy', function(hexafy) {
    return function(x) {
        return hexafy.myFunc(x);
    };
}]);
app.controller('myCtrl', function($scope) {
    $scope.counts = [255, 251, 200];
});
</script>

猜你喜欢

转载自blog.csdn.net/Whiteface_clown/article/details/80640756
今日推荐