Grails は非常に強力で、1 つのステートメント ( ) で Domain オブジェクトを JSON に変換できますobject as JSON
。残念ながら、いくつかの理由により、これは Ember.js とやり取りするには十分ではありません。
Grails を Ember.js とうまく連携させるにはどうすればよいですか?
Grails は非常に強力で、1 つのステートメント ( ) で Domain オブジェクトを JSON に変換できますobject as JSON
。残念ながら、いくつかの理由により、これは Ember.js とやり取りするには十分ではありません。
Grails を Ember.js とうまく連携させるにはどうすればよいですか?
いい質問だ、自分!
Ember.js とその auto-AJAX-in-browser-data-store 忍術は、URL が特定の方法で表示され、JSON が特定の方法で表示されることを期待しています。各ツールの動作方法により、方程式の両側に適合する変更を加える方が簡単です!
MyCoolDomainClass
コントローラを持つDomain クラスの場合MyCoolDomainClassController
、Grails は URL を提供したいと考えています/app/myCoolDomainClass
。次の行に沿って何かを含むようにコントローラーを設定した場合:
def index() { render MyCoolDomainClass.list() as JSON }
次のような応答が返されます。
[{ id: 1, name: "Bob"}, {id: 2, name: "Sally"}]
Ember.js では、同じプロパティを持つモデルを作成できます。を活用ember-data
することで、ブラウザのデータ ストアをバックエンドに簡単に接続できます。残念ながら、Ember.js が求めるものは異なります。URL/my_cool_domain_class
がデータを提供することを期待しています。
{ mycooldomainclass: [ { id: 1, name: "Bob"}, {id: 2, name "Sally"}] }
更新: ember-data-grails
Githubにレポを作成しました。このレポは、これらすべての変更を処理し、うまく機能するコントローラーを作成する方法を示しています。
私は emberjs から始めて、Grails 1.3.7 で 2 年間働いています。
{ mycooldomainclass: [ { id: 1, name: "Bob"}, {id: 2, name "Sally"}] }
それはとても簡単です:
def c = Product.createCriteria()
def products = c.list{
//your criteria
}
res = products.collect {a ->
return [id:a.id, name:a.name, price:a.price, categoryname: a.category.name]
}
response.setHeader( "Pragma", "no-cache" )
response.setHeader( "Cache-Control", "no-cache" )
response.setDateHeader( "Expires", 0 )
render(contentType: 'text/json') {[
'mycooldomainclass': res
]}