Angularjs --- 关于$resource的使用

理解

$resource 用于创建资源对象,该对象能与RESTful的服务器进行数据交换。

(个人理解:就好像J2EE里面的Service 访问 DAO一样,只是把DAO对象换成的url。 不知道这样理解算不算错误。)

依赖

$http

使用

$resource(url[, paramDefaults][, actions]);

参数

参数名类型详情
urlstring

参数以【:】为前缀的参数化的URL模板,例如【/user/:username】。

如果url带有后缀,则直接添加。例如【http://example.com/:id.json】,甚至是【http://example.com/resource/:resource_id.:format】。

paramDefaults

【可选】

Object

url参数中的默认值。可在action方法中被覆盖。

若任一参数为函数,则每当一次请求需要获取参数值时,都将被执行(除非参数被覆盖)。

参数对象中的每个键值对,若在url模板中存在则会被首先绑定,多余的键将被添加到url搜索查询(?之后)。

给定模板【/path/:verb】与参数【{verb:'greet', salutation:'Hello'}】,将得到URL【/path/greet?salutation=Hello】。

若参数值以【@】作为前缀,则该参数的值将被从data对象中取出(用于非GET操作)。

actions

【可选】

Object

声明扩展默认资源动作集合的自定义动作的声明集合。声明应以$http.config的格式创建:

{action1: {method:?, params:?, isArray:?, headers:?, ...},
 action2: {method:?, params:?, isArray:?, headers:?, ...},
 ...}

其中:

action - {string} - 动作名。该名称成为你的资源对象的方法名。

method – {string} – HTTP请求方法。合法的方法包括GET, POST, PUT, DELETE和JSONP。

params – {Object=} – 本动作提前绑定的参数的可选集合。若任一参数为函数,则每当一次请求需要获取参数值时,都将被执行(除非参数被覆盖)。

url – {string} – 动作特定url覆盖。支持url模板,与资源级别url相似。

isArray – {boolean=} – 本动作的返回对象是一个数组,则为真。

【以下略】


官方文档的一个例子:

     // Define CreditCard class  用$resource创建资源对象
     var CreditCard = $resource('/user/:userId/card/:cardId'  // RESTful url 
        ,{userId:123, cardId:'@id'}    // url 参数的默认值, 
         // 若参数值以【@】作为前缀,则该参数的值将被从data对象中取出(用于非GET操作)
        ,{charge: {method:'POST', params:{charge:true}}});  // action 参数,我理解就是对象方法
     //下面代码不做详细介绍
     // We can retrieve a collection from the server
     var cards = CreditCard.query(function() {
       // GET: /user/123/card
       // server returns: [ {id:456, number:'1234', name:'Smith'} ];

       var card = cards[0];
       // each item is an instance of CreditCard
       expect(card instanceof CreditCard).toEqual(true);
       card.name = "J. Smith";
       // non GET methods are mapped onto the instances
       card.$save();
       // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
       // server returns: {id:456, number:'1234', name: 'J. Smith'};

       // our custom method is mapped as well.
       card.$charge({amount:9.99});
       // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
     });

返回

返回一个资源“类”对象。该对象包含默认资源动作的方法,和可选的自定义的扩展动作。默认集合包含以下动作:

{ 'get':    {method:'GET'},  'save':   {method:'POST'},  'query':  {method:'GET', isArray:true},  'remove': {method:'DELETE'},  'delete': {method:'DELETE'} };

调用这些方法将以特定的http方法、目标和参数调用ng.$http。数据从服务器返回后,该对象将是该资源类的一个实例。save,remove,delete动作($前缀)可作为该对象的方法使用。这允许你很容易地对服务器端数据进行CRUD操作,如:

var User = $resource('/user/:userId', {userId:'@id'});var user = User.get({userId:123}, function() {
user.abc = true;
user.$save();
});

调用$resource对象的方法将立即返回一个空引用(对象或数组依isArray而定)。数据一旦从服务器返回,该引用将填充具体的数据。这是 一个有用的技巧,因为资源通常被赋给一个模型,模型随即被视图渲染。一个空对象不会被渲染,而当数据从服务器返回,那么该对象将填充数据,视图会自动重新 渲染、以显示新的数据。这意味着在多数情况下没有必要为动作方法写回调函数

由于大部分内容是copy别人所以是转贴。

具体使用可以查看官方文档。

转载于:https://my.oschina.net/u/140777/blog/294549

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值