在使用资源时,我们可以将它们直接绑定在$ scope上,如下所示:
$scope.users = Users.$query();
这也可以写成:
Users.$query().$promise.then(function(users) {
$scope.users = users;
});
您是否遇到过使用第一种方法的任何缺点?各自的优点和缺点是什么?
答案 0 :(得分:1)
来自有角度的 ng-book :
$ resource 实例是异步的
通过所有这些方法,重要的是要注意它们是什么时候 调用后,$ resource对象立即返回一个空引用 对数据。此数据是空引用,而不是实际数据 所有这些方法都是异步执行的。因此,打电话给 获取实例可能看起来是同步的,但实际上并非如此。事实上, 它只是对Angular将填写的数据的引用 当它从服务器返回时自动。
// $scope.users will be empty
$scope.users = User.query();
我们可以使用方法的回调方法等待数据按预期返回 提供:
$scope.users(function(users) {
// logic here
});
或使用$http
属性
$promise
$scope.users.$promise.then(function(users) {
// logic here
});
答案 1 :(得分:0)
两种方法基本相同。
它们之间的主要区别在于,在第二种方法中,您将能够在请求完成后执行某些操作,而在第一种方法中,为了能够在请求完成时运行逻辑,您将会需要在users变量上使用$ watch语句。
然而,第一种方法将允许您在用户内部放置默认值,这在请求完成之前绑定视图时很方便。
顺便说一下,还有第三种选择:
$scope.users = Users.$query();
$scope.users.$promise.then(function(users) {
// perform some logic
});
这允许您立即将视图绑定到作用域中的users变量,同时执行请求完成后可能需要的任何其他逻辑。