2

我想使用 REST API 进行交互,$resource但是在调用 save 方法时has no method '$save'出现错误。我的代码受到AngularJS $resource RESTful 示例中的答案的启发

myapp.factory('Monitoring', function($resource) {
   return $resource('http://localhost:8080/wepapp/network/v1/cronjobs/:id', { id: '@id' } );
});

@Q1: in的目的是{ id: '@id' }什么?我在大多数示例中都找到了它。

myapp.factory('MonitoringCRUDControllerService', ['Monitoring', function(Monitoring) {
    return {
        create: function(id, command, schedule) {
            console.log("create");
            console.log(command);
            console.log(schedule);
            Monitoring.id = id;
            Monitoring.command = command;
            Monitoring.schedule = schedule;
            console.log(Monitoring);
            Monitoring.$save();
        }
    }
}]);

对象被Monitoring正确注入:

function Resource(value){
        copy(value || {}, this);
      } 

调用$save失败并出现错误has no method '$save'

Q2:保存前的目的是什么$

Q3:使保存方法起作用我缺少什么?

4

1 回答 1

1

您需要Monitoring像这样创建您的类的实例(未经测试):

var m = new Monitoring({id:id});
m.command = command;
m.schedule = schedule;
m.$save();

文档(http://docs.angularjs.org/api/ngResource.$resource)有一个类似的例子:

var newCard = new CreditCard({number:'0123'});
newCard.name = "Mike Smith";
newCard.$save();

@前段时间我问过关于标志的相同问题: “at” sign in parameter names in resource definition。基本上@,符号意味着将从对象的属性中读取该值。或者正如相同的文档所说:

如果参数值以 @ 为前缀,则从数据对象中提取该参数的值(对于非 GET 操作很有用)。

$不是任何特殊字符,它只是方法名称的一部分。

于 2013-08-23T08:31:18.213 回答