我想使用$resource
与REST API进行交互,但在调用save方法时出现has no method '$save'
错误。我的代码的灵感来自AngularJS $resource RESTful example
myapp.factory('Monitoring', function($resource) {
return $resource('http://localhost:8080/wepapp/network/v1/cronjobs/:id', { id: '@id' } );
});
Q1:@
中{ 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:保存之前$
的目的是什么?
问题3:为了使保存方法有效,我缺少什么?
答案 0 :(得分: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有用) 操作)。
$
不是任何特殊字符,它只是方法名称的一部分。