我很抱歉提出這個問題,但我不知道該怎麼做了。我最近開始使用AngularJS和Grails 3,我對整體數據流感到困惑。自從幾天以來,我正在尋找一個明確的解釋,但是我沒有提出任何適合我的問題的良好來源。Grails 3和角度 - 如何將輸入參數傳遞到後端控制器
我們有一些數據模型,它們命名爲富,其中有一個相對於其他的對象,他們的名字吧:
class Foo implements Serializable{
Date dateCreated
Date lastUpdated
String name
Bar bar
C c
...
}
和
class Bar implements Serializable {
String name
String usid
C c
D d
E e
}
現在我想有一個輸入對話我可以填寫Object Foo所需的數據,以便在數據庫中使用一個http請求保存級聯所有對象。
我現在的問題是,因爲我是angularJS的新手,我不知道如何創建關係對象並在數據對象Foo中使用它們。我需要在我的JSON中創建對象Bar所需的信息,但我無法在後端訪問它,因爲後端的保存方法使用數據類型Foo進行調用,因此Bar在Foo中爲null。
到目前爲止,我有一個Foo的前端控制器,並且在請求後,Foo.controller注入一個帶有動作的Foo.service:'save',以便在後端以某種方式調用方法保存。
這裏是重要的部分代碼:
前端控制器:
function FooCreateController(fooService, $routeParams, $location) {
var vm = this;
vm.save = function (foo) {
fooService.save({action: 'save'}, foo, function (res) {
if (res.id) {
$location.path("/foo/" + res.id);
}
else {
alert("Unknown error occurred");
}
})
}
}
fooDataFactoryService:
angular
.module("fooPackage.foo")
.factory("fooDataFactoryService", fooDataFactoryService);
function fooDataFactoryService(DomainServiceFactory) {
return DomainServiceFactory('/foo/:action/:fooId', {fooId: '@id', action: '@action'},
{"show" : {method: "GET"}},
{"save" : {method: "POST"}},
{"delete" : {method: "DELETE"}},
{"update" : {method: "PUT"}}
);
}
Groovy的後端控制器:
def save(Foo foo) {
if (foo == null) {
transactionStatus.setRollbackOnly()
render status: NOT_FOUND
return
}
if (foo.hasErrors()) {
transactionStatus.setRollbackOnly()
respond foo.errors, view:'create'
return
}
foo.save flush:true
respond foo, [status: CREATED, view:"show"]
}
如何我可以做到這一點嗎?我不想用數據類型Foo調用後端保存方法,但是使用來自請求的輸入參數。或者有沒有更好的方法呢?
我對Angular還不夠了解,但是這個週末完成非常重要,我肯定需要任何幫助。 :-(
非常感謝事先!
好了,所以我現在的想法是不使用對象美孚在此對話框中,而是使用類似的對話對象,它需要所有的輸入參數爲字符串,並將它們傳遞到後端控制器。然後控制器根據他得到的參數來實例化新的對象。這應該工作,但它似乎並不適合我...另一個想法,高度讚賞! – Vegaaaa
我收回來了,對這個解決方案的看法越多,對我而言就越好。通過使用一個自己的公式對象來處理這個輸入請求,我們也可以獲得更高的關注點和更高的模塊性...... – Vegaaaa