ngResource模块的使用

来源:互联网 发布:中国it从业人数 编辑:程序博客网 时间:2024/06/04 19:34

ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法

1.引入angular-resource.min.js文件

2.在模块中依赖ngResourece,在服务中注入$resource

var HttpREST = angular.module('HttpREST',['ngResource']);
HttpREST.factory('cardResource',function($resource){    return $resource('/card/user/:userID/:id',{userID:123,id:'@id'},{charge:{method:'POST',params:{charge:true},isArray:false}})});

3.$resource的参数:

$resource(url,{url参数},{自定义方法})

url: 必填,资源的基础url

url中带有 ':' 项的是根据第二个参数来进行配置的. 

url参数: 选填,配置url中的带有 ':' 项的参数

eg:

('/card/user/:userID/:id',{userID:123,id:'@id'}),那么userID会被配置为123.

另外,在调用$resource()的方法的时候(比如get,query...),可以传入参数覆盖这里对url参数的配置,这在后面说得到它的方法的时候再详解

而id属性在后面讲第三个参数的时候讲解

自定义方法: 

使用$resource获取到的资源,或者通过$resource实例化的资源,资源本身会具有一些方法,比如$save,第三个参数用于给资源添加自定义的方法:详见:http://www.cnblogs.com/liulangmao/p/3907032.html

4.$resource()的方法:

$resource()一共有以下5个方法:

get: 

{method:'GET'}

一般用于获取某个资源:

query:

{method:'GET',isArray:true}

一般用于获取一整套的资源,以数组形式返回

save:

{method:'POST'}

一般用于保存某个资源,有可能是新建的资源,也有可能是更新现有的资源

remove:

{method:'DELETE'}

一般用于删除某个资源

delete:

{method:'DELETE'}

一般用于删除某个资源

然后来讲解一下get方法和query方法的用法:

get和query方法都是GET类型的请求,他们的调用方式是相同的:

cardResource.action([parameters], [success], [error])

[parameters]: 可选. 一个json对象,用于配置url里的参数,比如这里写了{id:cardID},那么提交的请求url就是 '/card/user/123/cardID'.

                    可以不填,不填就直接按照$resource()里的url来提交,注意,不填的话,不需要给个空,可以直接写success回调,angular能够判断出它没有填第一个参数,而不是死板的按照顺序来解读参数.

[success]:可选. 请求成功后的回调函数.回调接受2个参数(注意这里和$http有所不同):

              function(data,headers){

              //data是请求到的内容

              //headers是响应头

              }

[error]:可选. 请求失败后的回调.回调接受1个参数

              function(httpResponse){

              //httpResponse暂不知道是什么. 反正是和响应有关

              }

凡是通过$resource返回的对象,一定是json格式的,如果后台返回的数据不是json,$resource也会按照自己的方式处理成json格式,比如后台返回字符串'我爱你',那么如果是get方法,得到的数据就是:

{
0:我,
1:爱,
2:你
}

而query方法定义了isArray为true,所以他的返回值必须是数组,并且数组里的每个值都必须是json格式的对象.如果返回的是字符串'我爱你',那么如果是query方法,得到的数据就是:

[

{0:'我'},

{0:'爱'},

{0:'你'}

]

如果返回的是一个json对象{name:'code_bunny'},那么得到的数据就是:

[{name:'code_bunny'}]

所以,在后台最好就做好相应的处理,按照规范格式返回数据


转载自:http://www.cnblogs.com/liulangmao/p/3906721.html

1 0
原创粉丝点击