【问题标题】:Add a custom method to $resource in Angular JS在 Angular JS 中向 $resource 添加自定义方法
【发布时间】:2015-06-19 13:33:01
【问题描述】:

我编写了一个自定义方法来调用我的 API 并传递一些额外的参数,但我收到以下错误: TypeError test.testing 不是函数。 我按照这里的代码:https://docs.angularjs.org/api/ngResource/service/$resource

这是我使用的代码,例如 $save 工作正常。

我使用的是 1.4.1 版。

services.factory('Calendar',function($resource){
    return $resource('/api/calendar/:id',{
        update: {
            method: 'PUT'
        },
        testing: {
            method: "POST", params:{charge:true}
        }
    });
});

function( $scope, Calendar ) {

        var test = new Calendar();
        test.title = "hello";
        test.$testing();
        ...
}

【问题讨论】:

  • 你试过test.$testing()
  • 是的,我做了,这是我最初的脚本,后来改成了“测试”,这也不起作用。
  • 我不认为你已经完全按照这个例子......
  • 这就是我的想法link
  • 谢谢,它可以工作,因为你已经添加了 {id: 200} 但是为什么我忽略它时它不能工作?

标签: angularjs


【解决方案1】:

原因是您没有完全按照文档中的示例进行操作。见:

angular.module('testApp', [])
  .factory('CreditCard', creditCard)
  .factory('Calendar', calendar);

function creditCard() {
  return $resource('/user/:userId/card/:cardId',
      {userId:123, cardId:'@id'}, {
      charge: {method:'POST', params:{charge:true}}
  });
}

function calendar() {  
  return $resource('/api/calendar/:id',
    {id: 200},
    {
      update: {
          method: 'PUT'
      },
      testing: {
          method: "POST", params:{charge:true}
      }
  });
}

如您所见,我添加了第二个对象参数{id:200},它告诉ng-resource,为了正确填写/api/calendar/:id,它需要从该对象中提取属性id并使用它的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多