在此代码段中,Angular documentation on $resource
中的函数名称为user
,函数内部使用的是同名变量。
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
user.abc = true;
user.$save();
});
这有什么意义?围绕这个有什么规则?
答案 0 :(得分:1)
当您致电User.get()
时,它会返回一个承诺,并继续处理。当该承诺解析时,angular将您设置的变量设置为user
,即分辨率的值。它也调用成功回调函数,因此您可以在那时安全地更改它。
使用上面的例子,会发生这种情况。
User.get
返回一个承诺并将var user
设置为该承诺{id:123,name:"Imray"}
user
设置为{id:123,name:"Imray"}
user.abc
设置为true
,因此您的对象现在为{id:123,name:"Imray",abc:true}
user.$save()
,将其保存到服务器等等。基本上,它没有任何问题,只要知道执行的顺序。
答案 1 :(得分:0)
"用户"不是函数的名称,它是从给定资源读取的对象的名称。
要正确。当http请求完成时,用户成为填充数据的代理。
第二个参数 - 函数是在用户成功加载后调用的回调,因此用户成为完全创建的对象。
因此,当调用.get时,它的工作原理如下:
在文档中,您可以阅读:https://docs.angularjs.org/api/ngResource/service/$resource - (部分使用/退货)
"重要的是要意识到调用$ resource对象方法 立即返回一个空引用(对象或数组取决于 IsArray的)。一旦数据从服务器返回现有数据 引用填充了实际数据。这是一个有用的技巧 因为通常将资源分配给当时的模型 由视图呈现。拥有一个空对象导致无法渲染, 一旦数据从服务器到达,则填充对象 随着数据和视图自动重新呈现自己显示 新数据。这意味着在大多数情况下,人们永远不必写一个 动作方法的回调函数。"
"用户"不必作为参数传递,因为在调用回调之前设置了用户。