2011-12-15 19 views
1

私は、knockoutJSビューモデルを使用してajax JSON投稿を送信するコントローラをgrailsに持っています。コントローラ側のデータモデルを自動的に春の結合魔法を使用し、私のデータの新しいインスタンスにJSONリクエストパラメータをバインドしようとしている1対多のプロパティにバインドするための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)) 
} 

:(javascriptオブジェクトと一緒に)ビューモデルは、次のようになりますそのようなモデル:私は春がchildProperty.idは、データモデルの1対多の関係であることを検出すると、データモデルに関連するプロパティを取得行き結合たいとき

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

問題がでてきます。あなたはあまりにもこれらの関係を更新する Grailsのデータバインディング機能を使用することができる1対1または多対1の関連を持っている場合は

データ

を結合し、協会:Grailsのドキュメントは、これは言います。次のような着信要求がある場合 たとえば:

/book/save?author.id=20

をGrailsは自動的にリクエストパラメータに.ID サフィックスを検出し、ルックアップ著者のインスタンスをします

がDEF =新しいブック(のparams)

私はko.toJSユーティリティ機能を使用していますが、単純なプロパティが正しく結合されているB: 与えられたIDのようなデータバインディングを実行するとき。 Grailsコントローラに投稿されたときにSpringがそれを正しく検出し、関連するレコードを取得してオブジェクトを構築するように、ビューモデルの子プロパティをどのように設定できますか?

答えて

0

automagic springバインディングが動作することはありませんでした。そのため、子オブジェクトのidを渡し、paramsマップのサーバー側に手動で設定しました。その後、GORMはレコードを適切に取り出します。このような何か:

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

def parentObject = new ParentObject(params) 
} 

これは、関連項目を取得し、オブジェクトを構築します。関連分野がたくさんある場合、これは苦しいプロセスになるでしょう。

関連する問題