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. WPF之DataTemplateSelector技巧

    WPF中如何通过一个属性来控制对象的模板,属性值改变时对象的模板会跟随改变? 两个关键点   1 属性/对象更改通知 方法一:继承INotifyPropertyChanged接口,当属性值更改时需要让 ...

  2. ScrollView分析

    本文转载至 http://blog.sina.com.cn/s/blog_a843a8850101dsg5.html   Properties alwaysBounceHorizontal       ...

  3. python 基础 8.1 r 正则对象

                                                                                                        ...

  4. 【转】soapUI和Jmeter的接口测试结构区别

    使用SoapUI和Jmeter都可以进行自动化接口测试,但是每个工具都有自身的特点,所以他们的结构也有一定的区别 SoapUI 项目名称 -Rest服务.Rest资源 在使用SoapUI进行接口测试时 ...

  5. Node.js面试题

    Node.js面试题列表 什么是错误优先的回调函数? 如何避免回调地狱? 如何用Node来监听80端口? 什么是事件循环? 哪些工具可以用来保证一致的编程风格? 什么是测试金字塔?对于HTTP API ...

  6. pip3 Fatal error in launcher: Unable to create process using '"' [转]

    在新环境上安装python的时候又再次遇到了这个情况,这次留意了一下,发现原来的文章有错误的地方,所以来更新一下,应该能解决大部分的问题. 环境是win8,原来只安装了python2.7.后来因为要用 ...

  7. 查看远程分支的log

    1 将远程分支的commit fetch到本地 git fetch 2 查看远程分支的log git log <remote-branch>

  8. table表格隔行变色

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 堆中的路径 【Heap】

    7-2 堆中的路径(25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000),分 ...

  10. Ctags快速入门

    Ctags快速入门 在vim下阅读代码,特别是阅读不熟悉的代码时,ctags是一个提高效率的强大的工具. 1. ctags是什么? ctags可以将代码中的函数.方法.类.变量和其他的标识符进行索引, ...