标签: angular-resource

如何处理AngularJS中的$ resource服务错误

我正在向我的API发出请求,我正在使用AngularJS $资源模块.它与$ http不同,所以我不知道如何处理我的错误.

我的服务:

var appServices = angular.module('app.services', ['ngResource']);
appServices.factory('Category', ['$resource',
    function($resource){
        return $resource('/apicategoryerr/?format=:format', {}, {
            query: {
                method: 'GET', 
                params: { format: 'json'}, 
                isArray: true,

            }
        });
    }]);
Run Code Online (Sandbox Code Playgroud)

我的控制器:

...
Category.query(function(data) {
                console.log(data);
            });
...
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西或..如果我的API无效,我不知道如何处理错误..

Category.query().success(function() {
                console.log('success');
            }).error(function() {
                console.log('error');
            });
Run Code Online (Sandbox Code Playgroud)

angularjs angular-resource

96
推荐指数
2
解决办法
8万
查看次数

AngularJS资源承诺

我有一个使用$ resource的简单控制器:

 var Regions = $resource('mocks/regions.json');

 $scope.regions = Regions.query();
Run Code Online (Sandbox Code Playgroud)

我在指令中使用这个控制器(在链接函数中)

var regions = scope.regions;
Run Code Online (Sandbox Code Playgroud)

但是地区是不确定的.调用是异步的,这是相当逻辑的.

我的问题是如何才能等待结果和区域成为包含所有数据的数组?

UPDATE : 
Run Code Online (Sandbox Code Playgroud)

这里是指令的定义

app.directive('ngMap', function() {
  return {
    restrict: 'EA',
    replace: 'true',
    scope: {

    },
    template: '<div id="map"></div>',
    controller: 'AccordMapCtrl',
    link: function(scope, element, attrs) {
      var regions = scope.regions;
      console.log(regions);

      for (var region in regions) {}
    };
  });
Run Code Online (Sandbox Code Playgroud)

promise angularjs angular-resource

73
推荐指数
3
解决办法
10万
查看次数

AngularJS在服务器和客户端之间自动同步数据

AngularJS文档中有些东西我似乎无法找到,或者我可能只是遗漏了.

我正在后端创建一个带有NodeJS和Express的Web应用程序,我试图了解它如何与前端的Angular交互.特别是,我将为Angular提供一个JSON API来获取信息.我希望前端始终保持最新状态.

我的问题是:

  • 双向数据绑定功能是否意味着Angular($ resource或$ http)每n 秒自动从服务器获取数据?
  • 它是否自然地使用长轮询,短轮询或websockets?
  • 您是否需要JQuery来实现服务器 - 客户端同步或者是否可以使用Angular完成所有操作?
  • 您是否必须添加额外的代码才能实现此行为?我需要使用$ timeout吗?

我似乎发现的每个例子都涉及客户端获取数据一次.不与服务器同步数据.

angularjs angular-resource

58
推荐指数
1
解决办法
2万
查看次数

AngularJS:使用$ resource上传文件(解决方案)

我正在使用AngularJS与RESTfulWeb服务进行交互,$resource用于抽象暴露的各种实体.这些实体中的一些是图像,因此我需要能够使用"对象" 的save动作$resource在同一请求中发送二进制数据和文本字段.

如何使用AngularJS的$resource服务在单个POST请求中发送数据并将图像上传到安静的Web服务?

upload angularjs angular-resource

54
推荐指数
3
解决办法
5万
查看次数

AngularJS:为每个端点创建多个工厂?

根据一些例子,看起来我们可以注入一个工厂,它包含一个像这样的休息服务的端点

services.factory('Recipe', ['$resource',
     function($resource) {
        return $resource('/recipes/:id', {id: '@id'});
}]);
Run Code Online (Sandbox Code Playgroud)

这看起来很棒,但想象我有其他端点即/ users /:id和/ groups /:id,因为您可以想象不同端点的数量将会增加.

因此,优良作法是为每个端点设置不同的工厂,以便...

services.factory('Recipe', ['$resource',............

services.factory('Users', ['$resource',.............

services.factory('Groups', ['$resource',...............
Run Code Online (Sandbox Code Playgroud)

或者还有另一种推荐方式吗?

我真的没有看到它的问题,但它会迫使我创建很多工厂只是为了处理不同的端点.

任何帮助或指导真正适用

谢谢

angularjs angular-resource

45
推荐指数
1
解决办法
3万
查看次数

$ resource中删除和删除方法的区别?

deleteremove方法有什么区别?它们都使用DELETEHTTP方法.我找不到任何合理的信息.

angularjs angular-resource

41
推荐指数
1
解决办法
9063
查看次数

在$ resource上发送请求正文

我看一下Angular API for $ resource,我没有找到一些方法来发送Request Body一个RESTful服务.

我知道这可以使用$ http方法,就像这里一样,所以,它是否也可以使用$resource

显然这是可供选择的$resource.

action - {string} - 操作的名称.此名称将成为资源对象上方法的名称.

method - {string} - HTTP请求方法.有效的方法是:GET,POST,PUT,DELETE和JSONP

params - {object =} - 此操作的可选预绑定参数集.

isArray - {boolean =} - 如果为true,则此操作的返回对象是数组,请参阅返回部分.

目前我没有找到任何方式来发送包含JSON对象的请求有效负载.

angularjs angular-resource

37
推荐指数
2
解决办法
5万
查看次数

在AngularJS中测试$ resource服务

我正在尝试开始为我的角度应用程序编写单元测试并快速点击停止块,因为我不确定如何以可测试的方式模拟我的服务.
有没有办法模拟REST调用,否则看起来我需要在我的测试中反映我的服务中的所有内容,这对我来说似乎不对,但我对测试写作是相当新的,所以也许这就是它的假设要完成.任何帮助将不胜感激.

我的服务如下:

angular.module('resources.users', ['ngResource'])
.factory('User', function($resource) {
   var resource = $resource('/api/index.php/users/:username', {}, {
      'update': {method: 'PUT'}
   });

   resource.getUser = function(username, successCb) {
      return resource.query({username: username}, successCb);
   };

   return resource;
});
Run Code Online (Sandbox Code Playgroud)

我的测试到目前为止:

describe('User', function() {
    var mockUserResource;
    beforeEach(module('resources.users'));
    beforeEach(function() {
        mockUserResource = sinon.stub({
            getUser: function(username) {
                mockUserResource.query({username: username});
            },
            query: function() {}
        });
        module(function($provide) {
            $provide.value('User', mockUserResource);
        })
   });
   describe('getUser', function() {
      it('should call getUser with username', inject(function(User) {
          User.getUser('test');
          expect(mockUserResource.query.args[0][0]).toEqual({username: 'test'});
      }));
   })
});
Run Code Online (Sandbox Code Playgroud)

angularjs angular-resource

37
推荐指数
2
解决办法
2万
查看次数

AngularJS $资源将id作为查询参数传递给url

我需要从其他API获取数据,其中产品ID是url的一部分(而不是查询参数).

工厂:

.factory('Products', ['$resource',
    function($resource) {
        return $resource('products/:productId', {
            productId: '@id'
        }, {
            query: {
                isArray: false
            },
            update: {
                method: 'PUT'
            }
        });
    }
])
Run Code Online (Sandbox Code Playgroud)

控制器:

$scope.getProduct = function(id, from) {
    $scope.product = Products.get({ id: id }, function(){
        console.log($scope.product);
    });
}
Run Code Online (Sandbox Code Playgroud)

我的网址构造如下:

/products?id=5426ced88b49d2e402402205
Run Code Online (Sandbox Code Playgroud)

代替:

/products/5426ced88b49d2e402402205
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

javascript angularjs angular-resource

30
推荐指数
1
解决办法
4万
查看次数

Restangular与JSData(以前的Angular数据)的比较

关于Angular的一个特性和复杂性的一点是,它对于如何与RESTful API进行交互并不是很自以为是.我知道有关资源,Restangular以及您自己推出的各种想法.

在一个拥有大量资源(包括各种嵌套)的复杂应用程序中,有理由认为 Restangular优于$ resource; 出于类似的原因,Restangular比滚动自己更好.

直到最近我才看到的一个解决方案是JSData及其AngularJS(repo)的包装器.从Github(~900)的收藏数量来看,如果不使用它,它有相当多的人对它至少感兴趣.它只是Restangular在Github(5k +)上的一小部分,但仍然很重要.

对于那些同时使用Restangular和JSData的人来说,你对它们的比较有什么看法(优点/缺点;目的,可靠性等方面的差异;从文档中可能不太明显的事情)?要使这个问题保持开放,请坚持事实而不是意见.

我从以下内容中得到的印象如下:

Restangular

  • (+)大脑共享
  • (+)高度可定制
  • ( - )焦点似乎只是与RESTful API的实际交互,而不是一旦它返回就自以为是/作为数据存储(如果我错了请纠正我).当然,这可以被认为是一个特征,就像Angular缺乏意见一样.我现在认为这是一个不利因素,因为额外的工作量,这意味着开发人员可以提出自己的解决方案.

JSData

  • (+)不仅适用于REST,还适用于localStorage,localforage,Firebase等,包括自定义适配器
  • (+)设计为缓存数据存储而不必重复HTTP调用(公平地说,缓存也是Restangular的一个选项,尽管可能不那么交织/对其任务至关重要)
  • ( - )尽管开发人员似乎承诺,但并不像以下那样大

javascript angularjs angular-resource restangular angular-data

30
推荐指数
0
解决办法
2480
查看次数