如何使用Angular.js和$ resource与查询字符串的promises?

时间:2013-08-28 13:47:01

标签: angularjs promise

使用期望传递给它的查询字符串/参数的资源处理Angular.js中的promise的最佳方法是什么?我已经看到工厂,控制器和路由器处理了$ q的工作,但是当涉及参数时,我不知道如何处理它。
所以,如果这是工厂:

angular.module(Animals, ['$resource', '$route', '$location', function($resource, $route, $location) {
  return $resource('http://thezoo.com/animals', { query: {method: 'GET', isArray: true}});
}]);

这是控制器:

Animals.query({size="med",gender='f'});

那么如何使用promises处理这个问题呢?对外部资源的调用可能需要很长时间。

2 个答案:

答案 0 :(得分:3)

派对真的很晚,但我从谷歌那里找到了这个页面。 如果你想使用一个资源,但也许你想在继续之前从你的查询方法中获取数据(也许你是在解决这个问题或其他事情),你可以这样做。

var deferred = $q.defer();
Resource.query({params}, function (response) {
  someData = response;
  deferred.resolve(someData);
});
return deferred.promise;

答案 1 :(得分:1)

目前还不清楚你想要完成什么。

$resource方法不会返回承诺。它们将返回空数组或在服务器返回数据时填充的对象。

如果你想要一个返回一个promise的方法,你可以编写一个直接使用$http的方法。