EKe*_*Ket 19 javascript angularjs
我返回一个带有URL的资源
$resource("http://foo.com/bar.json").get().
$promise.then(function(data){ $scope.result = data},
function(error){ $scope.msg = "error" } );
Run Code Online (Sandbox Code Playgroud)
资源回报
["item1"...."item_n",.....,"$promise", "$resolved", "$get", "$save", "$query", "$remove", "$delete"]
Run Code Online (Sandbox Code Playgroud)
为什么我在数据集中获取所有这些对象.我猜$ promise只返回所有这些并等待服务器响应.但是,一旦我有服务器响应,我可以在没有Promise行话的情况下获取我的服务器数据吗?
ray*_*ard 33
如果你在这里看角度源:
https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js#L505
资源原型链上有一个toJSON方法,可以为您完成此任务.
例如:
$resource("http://foo.com/bar.json").get(function(res) {
$scope.result = res.toJSON();
});
Run Code Online (Sandbox Code Playgroud)
小智 5
你需要从你的后端返回像{'result':{'some_key':'some_val'}}这样的包装结果.或者就像上面描述的那样.
Diary.getSharedWithMe(function(data) {
delete data.$promise;
delete data.$resolved;
_self.sharedDiariesWithMe = data;
}, function(error) {
console.log(error)
});
Run Code Online (Sandbox Code Playgroud)
因此,如果其他人在这里绊倒并且不理解 Promise/AngularJS,这里就是发生的事情。当您使用.then()或.get()获得承诺和一些辅助函数时,它们都在同一个对象中。这太棒了,因为这样您就不必担心回调的定义以及数据是否可用,因为 Promise 对象总是具有一些属性。这个对象包含你在另一个对象内的原始数据。因此 Promise 对象是嵌套的,您只需在数据准备好时引用其中的数据对象即可。
这就是我正在做的
$resource("http://foo.com/bar.json").get().
$promise.then(function(data){ $scope.result = data},
//data is actually a promise object.
function(error){ $scope.msg = "error" } );
Run Code Online (Sandbox Code Playgroud)
承诺对象

请注意,数据实际上位于另一个名为“data”的对象下。因此,在您的成功回调中,仅获取在这种情况下应该执行的数据:data.data
| 归档时间: |
|
| 查看次数: |
13044 次 |
| 最近记录: |