zoukankan      html  css  js  c++  java
  • AngularJS中服务和自定义服务的常见方式及特点

    服务需要引入angualr.sanitize.js模块;
    var app = angular.module('myapp',['ngSanitize'])

     服务

    1. $http 能够进行数据的交互

    eg:调用百度接口,通过回调函数将搜索的值输出
    <div ng-controller="yourController">
            <input type="text" ng-change="search()" ng-model="wd">
            <ul>
                <li ng-repeat="word in dataList"><a href="https://www.baidu.com/s?ie=utf-8&wd={{word}}">{{word}}</a></li>
            </ul>
        </div>
      app.controller('yourController',function($scope,$http){
             $scope.search = function(){
                 $http({
                     url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
                     method:'jsonp',
                     params:{
                         wd:$scope.wd,
                         cb:'JSON_CALLBACK'
                     }
                 }).success(function(results){
                     $scope.dataList = results
                 })
             }
         })
    
    method:代表传递方法 get/post

    url:数据接口

    params:提交数据 相当于$.ajax里的data:{}
     
    2.$location 服务
            console.log($location.absUrl()) //输出绝对地址
            console.log($location.host()) //输出域名
            console.log($location.port()) //输出端口
            console.log($location.protocol()) //协议
            $location.path("h")  //设置哈希值 hash 切换页面
            console.log($location.path()) // #/hk
    3. $log 服务
           $log.error("ppp")  错误提示
           $log.info("ppp")   正常输出
           $log.warn("ppp")   警告
           $log.log('ppp')    正常输出

    自定义服务

    1. provider 既返回基本类型,也可以返回对象类型;也是唯一可以注入到config的服务;名称是***Provider
     
    可以在创建服务器之前先对服务器进行配置,因为provider可以通过定义config,通过$get来访问;

    用法:外面return出来的是这个服务的供应商,供应商的$get方法里返回的才是我们使用的部分,可以通过更改供应商的部分参数来控制服务的功能,
    myapp. provider ('myHttpService',['$http',function($http){
         return {
             $get:function(){
             return:{//这里才是输出
              } 
             }
    }])
    配置服务的供应商要放在配置之前
      app.config(function(_serviceProvider){
            _serviceProvider.info = "7m"
        })
    
    控制器
    
    app.controller('myController',function($scope,_service){
          _service.surf()      
        })
    2. factory 既返回基本类型,也可以返回对象类型
    特点:服务没有固定格式,先创建,再调用;自定义的服务可以依赖注入其他服务;

    eg: 返回随机数的案例
     app.factory('math_random',function(){
         //返回什么,服务就是什么 
        return {
            random:function(num2,num1){
                return Math.random()*(num2-num1)+num1
            }
        }
     })
     app.controller('myController',function($scope,$http,$log,math_random){
         console.log(math_random.random(2,3))
     })
    3. service 仅支持返回对象类型
    最简单的创建方式,自带返回,支持面向对象的写法;在Angular中调用service会用new关键字一个实例的服务;
    app.service('_service',function(){
            this.say = function(){
                alert("haha")
            }
        })
        app.controller('myController',function($scope,_service){
            console.log(_service) 
            // _service.say()
        })

    angularJS对服务供应商配置


    有的服务很可能是有服务供应商的,例如下面的页面输出的时候:!!1+2!!
    我们可以通过config对服务供应商进行配置以修改功能
    app.config(['$interpolateProvider',function($interpolateProvider){
        $interpolateProvider.startSymbol("!!") 
        $interpolateProvider.endSymbol("!!")
    }])

      

  • 相关阅读:
    适用于实数范围的中缀表达式的 +
    Django官方文档学习2——数据库及模板
    github命令
    千行代码入门Python
    Notepad++配置Python运行环境
    Python常用网页字符串处理技巧
    requests设置headers,proxies,cookies
    Django官方文档学习1——第一个helloworld页面
    笔记本键盘上没有break键的解决方案
    Python beautifulsoup模块
  • 原文地址:https://www.cnblogs.com/naniandongzhi/p/7899641.html
Copyright © 2011-2022 走看看