2011-12-15 105 views
1

我有一個控制器在grails,我發送ajax JSON發佈與knockoutJS視圖模型。視圖模型(連同一個JavaScript對象)是這樣的:安裝knockoutJS視圖模型綁定到一對多的屬性

var childProperty= function(name, id) { 
       this.name = name; 
       this.id = id;  
      }; 

//KnockoutJS - Main view model 
var viewModel = { 
    id: ko.observable(1), 
    childProperty: ko.observable(new childProperty("Chuck",1)) 
} 

控制器端的數據模型試圖自動使用Spring結合魔法和綁定JSON請求參數到我的數據的新實例模型像這樣:

def jUpdate = { 
     def update = new SomeObject(params) 
} 

的問題出現時,我想在Spring結合檢測childProperty.id是在數據模型中的一個一對多的關係,走在數據模型中獲取相關屬性。 Grails文檔這樣說:

數據綁定和協會

如果你有一個一對一或多對一的一個關聯中,你可以使用 Grails的數據綁定能力也更新這些關係。對於 例如,如果你有一個進入的請求,如:

/book/save?author.id=20

Grails將自動檢測的請求參數.ID 後綴,並查找作者實例對於 指定ID做數據時結合,例如:

DEF b =新預訂(PARAMS)

我使用ko.toJS效用函數和簡單的屬性是否正確結合。我如何設置視圖模型的子屬性,以便當它被髮布到grails控制器時,Spring會正確檢測它並獲取關聯的記錄並構建對象?

回答

0

我從來沒有能夠得到automagic彈簧綁定的工作,所以我只是通過ID爲子對象,並手動設置它們在服務器端的PARAMS地圖。之後,GORM適當提取記錄。類似這樣的:

def update = { 
params.put("childObject.id",params.childObjectId) 
params.remove("childObjectId") 

def parentObject = new ParentObject(params) 
} 

這會獲取相關項目並構建對象。如果你有很多相關領域,這將是一個痛苦的過程。

相關問題