2012-02-14 9 views
0

私は、すべてのユーザーがindex.htmlのでPlay FrameworkのhtmlファイルにブートストラップJSONコンテンツを追加するには? Application.javaで

public static void index() { 
    renderArgs.put("users", Users.getAll()); //getAll() returns gson.JsonArray 
} 

私はこのように、このユーザーをブートストラップ取得:

<script type="text/javascript"> 
    Users.reset(&{users}); 
</script> 

しかし、JSONは次のようにレンダリングされます:

[{&quot;id&quot;:&quot;1234&quot; ... 

JSONをJSON形式にするにはどうすればよいですか?

答えて

2

多分これは役立ちます:playframeworkのドキュメントから

<script type="text/javascript"> 
     Users.reset(&{users.raw()}); 
    </script> 

raw()

は、テンプレートエスケープせずにオブジェクトを返します。

戻り値:play.templates.Template.ExecutableTemplate.RawData。

1

Backbone.jsを使用している場合は、このスタイルのコレクションをブートストラップすることをお勧めします。私はこのアプローチが本当に好きではなかったので、別の方法を使用しました。Collectionをブートストラップするには、手作業で$.getJSON()コールでラップして初期化してください。たとえば、次のように

<script type="text/javascript"> 
    $(function() { 
     $.getJSON("@{controllers.MyJsonApiController.getStuff()}", function(data) { 
      Users.reset(data); 
     }); 
    }); 
</script> 

注:Users.reset()コールの正確な構文が正しくない可能性が、あなたはあなたの要件に応じて、window範囲にコレクションを定義する必要があります。あなたもBACKBONE.JS Viewの—を使用しているとき、私は—を見つけ

アンより良いアプローチは、あなたのViewオブジェクトであなたのCollection管理をカプセル化することです。このようにして、ページをレンダリングするときは、ビューをレンダリングするだけで独自の初期化が行われます。

更新:fetch()reset(data)コールを修正しました。

関連する問題