在oficial docs中没有任何关于回调函数的文章。
我有服务:
angular.module('myApp')
.factory('Thing', ['$resource',
function ($resource) {
return $resource('/api/things/:id', { id: 'all' }, {} );
}
);
我有控制器:
angular.module('myApp')
.controller('ThingCtrl', ['$scope', '$location', '$routeParams', 'Thing',
function ($scope, $location, $routeParams, Thing) {
Thing.get({id: $routeParams.thingId}, function(thing) {
// This callback i found in example
$scope.thing = thing;
});
$scope.save = function() {
Thing.save({id: $scope.thing._id}, $scope.thing, function() {
// This callback i found using brute force. It run when respond OK (200)
});
};
}
]);
我想了解如何使用此回调。 我想知道这回调是什么。
任何人都可以帮助我吗?
P.S。抱歉,如果我的英语不好......
答案 0 :(得分:1)
在深入研究源代码(版本1.2.16)之后,事实证明每个实例方法最多可以接收3个参数:
{id: 'some-ID'}
)。一旦谐振到来,就会调用成功/错误回调。
回调接收以下参数:
成功回拨:
一个。对象(例如thing
)。
湾标题getter函数。
错误回调:
一个。对象(例如thing
)。
如果您仔细阅读文档,您将能够在那里找到它:
值得注意的是,get,query和其他方法的成功回调在来自服务器的响应中传递,以及$ http header getter函数[...]:
var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function (user, getResponseHeaders) {
user.abc = true;
user.$save(function (usr, putResponseHeaders) {
//usr => saved user object
//putResponseHeaders => $http header getter
});
});
<强>更新强>
资源类与资源实例之间存在重要(并非如此明显)的区别。
通过调用$resource
服务返回资源类对象
通过调用资源类对象的方法返回资源实例对象。
澄清一下,在这个例子中:
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123});
User
是资源类对象(因为它是通过调用$resource(...)
返回的)。user
是一个资源实例对象(因为它是通过调用资源类对象的.get()
方法返回的,即{{} 1}})。现在,资源类对象对定义中的每个操作都有“静态”方法。
rsource 实例对象_是资源类型的一个实例,所有非GET方法都可以使用$ prefix _。
换句话说,User
( class )有静态方法User
,get()
,save()
等。
而delete()
( instance )具有前缀非GET方法,例如user
,$save()
等(但不是$delete()
或`$ query())。
非静态方法接收我前面描述的参数 静态GET方法也接收相同的参数(如前所述) 静态非GET方法接收额外的参数,即要发布的数据,即要对其执行的实例对象。
所以,这两个电话是相同的:
$get()
更新2 :
只有在为时已晚之后,才发现文档中已经清楚地描述了方法参数:
可以使用以下参数调用类对象或实例对象上的操作方法:
user.$save(params, success, error); // <-- non-static method
User.save(params, user, success, error); // <-- static method
Resource.action([parameters], [success], [error])
Resource.action([parameters], postData, [success], [error])
使用(
instance.$action([parameters], [success], [error])
,value
)参数调用成功回调 使用(responseHeaders
)参数调用错误回调。类操作返回空实例(下面有其他属性) 实例操作会返回操作的承诺。