我正在使用$ resource在Angular中做一些基本的CRUD东西,但我不认为我理解如何使用不同的资源方法。
据我所知,“常规”方法 - save()
,get()
等同步发生,如果你想做“经典”,你可以传入一个回调函数来完成“JS异步调用。每个结果都有一个$promise
属性,如果你想以那种方式做异步(我做!),它会返回一个promise。
但是除了(由于我也不明白的原因)$
和get()
之外,所有方法都有query()
个版本。这些$
方法是.$promise
的快捷方式吗?如果是,为什么没有$get()
或$query()
?
答案 0 :(得分:1)
是的,ngResource的文档很难理解。 基本上你需要区分
类动作,如
var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function(user) {
user.abc = true;
user.$save();
});
有一个额外的属性$promise
,当从$http
请求返回数据时,该属性将被解析。这就是为什么这可以写成:
User.get({userId:123})
.$promise.then(function(user) {
$scope.user = user;
});
来自文档:
当从服务器返回数据时,该对象是一个 资源类的实例。操作保存,删除和删除 可以使用$前缀作为方法。这允许你 轻松执行CRUD操作(创建,读取,更新,删除) 像这样的服务器端数据:
这就是为什么在上面的示例中可以在实例上调用user.$save();
的原因。