这无疑是一个初学者的问题 - 事实上我的谷歌搜索并没有给我很多建议,我试图做一些我不应该做的事情!但我正在努力思考下一步要做什么......
基本上我有一个对象,我想发布到REST API,它看起来像这样:
build = {
"hostname": "server1",
"id": "589077a935a68f3b16162460",
"osedition": "577503af1dde347724d1b83e"
}
....并且根据osedition值,需要发布的URL是/api/v0.1/builds或/api/v0.2/builds。这篇文章目前正在使用这家工厂完成:
app.factory("BuildWrite", function($resource) {
return $resource("/api/v:apiVer/builds/:id", {apiVer: "@apiVer"}, {
patch: {method: "PATCH"},
save: {method: "POST"}
});
});
...我用控制器从控制器调用工厂:
if (build.osedition == “blah”) {
var apiVer = "0.1";
} else {
var apiVer = “0.2”;
}
BuildWrite.save({apiVer: apiVer}, build).$promise.then( … )
这样工作正常,但是因为这个工厂是从几个地方/控制器调用的,所以我认为如果我可以通过将工厂设置为apiVer
来将$resource
设置为工厂本身,那将会更加简洁。在返回app.factory("BuildWrite", function($resource) {
if (data.osedition == “blah”) {
var apiVer = "0.1";
} else {
var apiVer = “0.2”;
}
return $resource("/api/v” + apiVer + “/builds/:id", {}, {
patch: {method: "PATCH"},
save: {method: "POST"}
});
});
函数之前检查POST请求的有效负载。像这样:
data
显然7;7;52*8
8;8;62*5
9;9;55*1
11;7;52*49
12;8;62*64
14;9;54*62
在这里是未定义的,但是我已经尝试了很多方法,并且无法解决如何从工厂内访问请求有效负载......它甚至可能吗?我完全错误地采取了这种方式吗?
任何帮助都将非常感谢。