Angularjs 角度资源REST没有方法'$保存';

Angularjs 角度资源REST没有方法'$保存';,angularjs,Angularjs,我想使用$resource与RESTAPI交互,但调用save方法时,我得到的没有方法“$save”错误。我的代码的灵感来源于上的答案 问题1:在{id:'@id'}中@的目的是什么?我在大多数例子中都发现了这一点 myapp.factory('MonitoringCRUDControllerService', ['Monitoring', function(Monitoring) { return { create: function(id, command, sche

我想使用
$resource
与RESTAPI交互,但调用save方法时,我得到的
没有方法“$save”
错误。我的代码的灵感来源于上的答案

问题1:在
{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();
        }
    }
}]);
监控
对象已正确注入:

function Resource(value){
        copy(value || {}, this);
      } 
调用
$save
失败,错误为
没有方法“$save”

问题2:保存之前,
$
的目的是什么


问题3:要使save方法正常工作,我缺少什么?

您需要创建一个
监控类的实例,如下所示(未测试):

文档()有一个类似的示例:

var newCard = new CreditCard({number:'0123'});
newCard.name = "Mike Smith";
newCard.$save();
不久前,我问了关于
@
符号的同样问题:。基本上,
@
符号表示将从对象的属性读取值。或者正如同一份文件所说:

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


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

错误消失了,但我注意到在Chrome中,被调用的URL不包含端口号,方法类型是OPTIONS:
OPTIONShttp://localhost/wepapp/network/v1/cronjobs
。这种行为有什么原因吗?
$resource
处理JSONP吗?我认为JSONP不起作用。我认为angular希望从URL获得JSON数据。我不知道为什么它省略了端口号。文件上说端口号是受尊重的。尝试在默认端口上运行它,看看它是否工作。对于我需要用“\\:”转义的端口,
,是否使用最新的角度?在转义冒号之前,它之所以使用
选项
,是因为没有端口号,这是一个不同的域,所以浏览器发送了一个所谓的CORS“preflight”请求。
var m = new Monitoring({id:id});
m.command = command;
m.schedule = schedule;
m.$save();
var newCard = new CreditCard({number:'0123'});
newCard.name = "Mike Smith";
newCard.$save();