AngularJS内置了$http这个服务来与后台联系。(默认会把接受到的数据转换为json)当然,还有一个$resource来提供与RESTful后台联系的服务。

$http服务
    $http比较简单,下面是$http的常规用法
    $http.get(url,[config])
    .success(function(data,status,headers,config){
        ...
    })
    .error(function(data,status,headers,config){
        ...
    });
    $http还有下面的API:
    $http.post(url[,data,config])
    $http.put(url[,data,config])
    $http.get(url,[config])
    $http.delete(url[,config])
    $http.head
    $http.jsonp(url[,config])   //用来跨域联系
    注意到在post和put方法签名中还有个data的参数,它用来传递需要往服务器发送的数据,他是{}类型的对象,config也是{}类型的对象,可以包含下面的属性
    $http({
        method:string,
        url:string,
        params:object,   //精确来讲类型是一个key-value的map
        data:string or object,
        headers:object,
        transformRequest:function (data,headersGetter){...} or an array of functions,
        transformResponse:function(data,headersGetter){...} or an array of functions,
        cache:boolean or Cache object,
        timeout:number,
        withCredentials:boolean
    });
    
$service服务
    $service包装了$http,让AngularJS可以使用RESTful风格编程。
    看下面的例子:
    module.factory('User',['$resource',function($resource){
        return $resource('/user/:userId/card/:cardId',
                         {userId:'123',cardId:'@id'},
                         {charge:{
                            method:'POST',
                            params:{charge:true},
                            isArray:false
                         }});
    }]);
    可以看到,$resource的签名如下:
    $resource(url[,defaultParameters,addtionalActions])

1.例子中url是'/user/:userId/card/:cardId',当中有两个奇怪的东西:‘:userId’和‘:cardId’。 意思是这个url是不完整的,一会儿要用defaultParameters中的userId和cardId属性值来分别代替这两个东西。如果找不到就会用空字符串代替
    2.例子中defaultParameters是-- {userId:'123',cardId:'@id'},仍然有奇怪的东西:cardId:'@id'。意思是我现在也不知道是什么东西,但是一会儿使用User这个服务是会传参数过来,我会在参数里面找属性为id的值,并把它给cardId用。(这是最后也会传到url中的:cardId)
    3.addtionalActions可以定义一些别的API。以后再说
    那么在使用User这个服务时有如下的对应表:
      调用的方法                    发送的url
    User.get({id:1})           /user/123/card/1   
    User.save({},uuser)        /user/123/card
    User.query()               /user/123/card
    User.query({id:1})         /user/123/card/1
    User.delete({id:1})        /user/123/card/1
    (像上面的query我们可以直接赋值给其他变量,如var users=User.query())

AngularJs(Part 5)--与后台联系的更多相关文章

  1. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  2. 通过AngularJS实现前端与后台的数据对接(一)——预备工作篇

    最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的 ...

  3. AngularJs $http.post 数据后台获取不到数据问题 的解决过程

    第一次使用 AngularJs 的 $http 模块的时候,遇到过后台获取不到前台提交数据的问题,检查代码没有发现问题,先上代码. js 代码 angular.module("newsApp ...

  4. angularjs制作的iframe后台管理页切换页面

    <code> <!DOCTYPE html><html lang="zh" ng-app><head> <meta chars ...

  5. 简洁AngularJS框架后台管理系统bootstrap后台模板

    最近在做一个后台管理的项目,但是没有设计图完全,所以就发现一款非常不错的模版. 这个模版是基于 AngularJS 和 bootstrap 的后台管理系统模版. Minovate是 AngularJS ...

  6. AngularJS从构建项目开始

    AngularJS从构建项目开始 AngularJS体验式编程系列文章,将介绍如何用angularjs构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀web前端框 ...

  7. 快速搭建Web环境 Angularjs + Express3 + Bootstrap3

    快速搭建Web环境 Angularjs + Express3 + Bootstrap3 AngularJS体验式编程系列文章, 将介绍如何用angularjs构建一个强大的web前端系统.angula ...

  8. angularjs的forEach使用

    最近一直在写angularjs中的http后台数据交互,存在的问题就是数据传输中数据格式的问题,如何将传输过来的数据转化为自己需要的数据.当然如果你会一点后台语言的话,完全可以用在后台把数据转化为需要 ...

  9. AngularJS最理想开发工具WebStorm

    http://blog.fens.me/angularjs-webstorm-ide/ Angularjs插件下载地址:http://plugins.jetbrains.com/plugin/6971 ...

随机推荐

  1. 我们计划为EasyDSS定制开发一款超低延时的EasyPlayer Flash播放器

    现象 最近团队在做EasyDSS RTMP流媒体服务器开发的过程中,遇到了一个关于延时累积的问题,先大概描述一下过程: 在EasyRTMP Android进行长时间的RTMP推流压力测试,在EasyD ...

  2. 用CMakeLists.txt组织工程

    1 一个工程会有多个CMakeLists.txt,如何组织这些CMakeLists.txt来构建一个工程? 1.1  最外层一个CMakeLists.txt,是总的CMakeList.txt,在这个里 ...

  3. 云服务器 ECS Linux CentOS 修改内核引导顺序

    由于 CentOS 7 使用 grub2 作为引导程序,所以和 CentOS 6 有所不同,并不是修改 /etc/grub.conf 来修改启动项,需要如下操作: 1. 查看系统内部有多少个内核: c ...

  4. 【linux】如何查看进程运行在那颗cpu上

    这里介绍一种方法查看进程运行在哪个cpu上, 首先top 然后按字母:f 按字母:j 回车即可 其中P列表示进程运行在哪个CPU上

  5. CodeForces - 960F Pathwalks —— 主席树(n棵线段树)

    题目链接:https://vjudge.net/problem/CodeForces-960F You are given a directed graph with n nodes and m ed ...

  6. Contiki 2.7 Makefile 文件(三)

    2.第二部分 这里的usage,targets,savetarget,savedefines都是伪目标. 和all不同,这些伪目标不会被执行,除非显式指定这些目标. 这里有两个目标savetarget ...

  7. 深入理解JVM - 虚拟机字节码执行引 - 第八章

    概述从外观上看起来,所有的 Java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.主要从概念模型的角度来讲解虚拟机的方法调用和字节码执行. 运行时 ...

  8. 织梦CMS博客风格模板

    织梦CMS博客风格模板,织梦CMS,博客模板,CMS模板.程序模板. 模板地址:http://www.huiyi8.com/sc/7248.html

  9. BZOJ 1685 [Usaco2005 Oct]Allowance 津贴:贪心【给硬币问题】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1333 题意: 有n种不同币值的硬币,并保证大币值一定是小币值的倍数. 每种硬币的币值为 ...

  10. CentOS7 默认防火墙firewalld

    firewalld基础 firewalld是CentOS7源生支持的防火墙,firewalld最大的好处有两个:支持动态更新,不用重启服务:第二个就是加入了防火墙的“zone”概念. firewall ...