2011-12-15 103 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) 
} 

这会获取相关项目并构建对象。如果你有很多相关领域,这将是一个痛苦的过程。

相关问题