AngularJS中的$resource

来源:http://docs.angularjs.org/api/ngResource.$resourceangularjs

我的翻译。json

ngResource模块的服务。api

描述数组

建立资源对象的工厂。该资源对象容许你与RESTful服务端数据资源进行交互。服务器

返回的资源对象拥有提供了高层行为的动做方法,从而无需与底层的$http服务进行交互。函数

须要安装ngResource模块。post

依赖url

$httpspa

使用翻译

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

参数

参数名 类型 详情
url string

参数以【:】为前缀的参数化的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=} – 本动做的返回对象是一个数组,则为真。

【如下略】

返回

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

{ '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而定)。数据一旦从服务器返回,该引用将填充具体的数据。这是一个有用的技巧,由于资源一般被赋给一个模型,模型随即被视图渲染。一个空对象不会被渲染,而当数据从服务器返回,那么该对象将填充数据,视图会自动从新渲染、以显示新的数据。这意味着在多数状况下没有必要为动做方法写回调函数。

类对象或实例对象中的动做方法能够用如下参数进行调用:

HTTP GET “类”动做: Resource.action([parameters], [success], [error])
non-GET “类”动做: Resource.action([parameters], postData, [success], [error])
non-GET 实例动做: instance.$action([parameters], [success], [error])

Success回调以(value, responseHeaders)参数调用。Error回调以(httpResponse)参数回调。

【如下略】

相关文章
相关标签/搜索