2012-03-14 11 views
0

私は、次のモデルがあります:Scalaのリフト - JsObj子値としてリスト()

class Chat private() extends MongoRecord[Chat] with ObjectIdPk[Chat] { 

    def meta = Chat 

    object room extends StringField(this, 50) 
    object user extends StringField(this, 50) 
    object name extends StringField(this, 50) 
    object level extends StringField(this, 50) 
    object target extends StringField(this, 50) 
    object value extends StringField(this, 50) 
    object time extends StringField(this, 50) 
    object fulltime extends StringField(this, 50) 
    object handle extends StringField(this, 50) 

} 

object Chat extends Chat with MongoMetaRecord[Chat] { 

    override def collectionName = "chat" 

} 

私が使用してロード:私はスニペットでレンダリング

var chat_model = Chat.findAll(

    ("room" -> "testroom"), 
    ("time" -> 1) 

).map(_.asJValue) 

を使用して:

def render = { 

    <script type="text/javascript"> 

     var DATA = {JsObj(

      ("CHAT", chat_model) 

     )} 

    </script> 

} 

コンパイルエラーが発生する:

[error] overloaded method value apply with alternatives: 
[error] (in: net.liftweb.http.js.JsExp*)net.liftweb.http.js.JE.JsArray <and> 
[error] (in: List[net.liftweb.http.js.JsExp])net.liftweb.http.js.JE.JsArray 
[error] cannot be applied to (List[net.liftweb.json.JsonAST.JObject]) 
[error]         ("CHAT", JsArray(chat_model) 

ように私は、chat_modelにちょうど最初のアイテムを渡すと:それは正常に動作しますが、明らかにオブジェクトの配列全体を印刷doesntの

JsObj(

    ("CHAT", chat_model(0)) 

) 

。感謝任意の助けを事前に

おかげで、:)

+0

詳細が必要だと思います。 'chat_model'はどのように定義されていますか? 'チャット'はどのように定義されていますか? 「DOMへの出力」とはどういう意味ですか? – leedm777

+0

明快に編集: – jhdevuk

+0

asJValueの代わりに 'asJs'を試しましたか? –

答えて

1

JsObject.applyメソッドを見ると、パラメータは(String, JsExp)*です。あなたはそれを(String, List[JObject])としています。そのリストをJsExpに変換する必要があります。

JArrayにリストをラップできます。should implicitly convertはJsExpになります。

import net.liftweb.json.JsonAST._ 

JsObj(("CHAT", JArray(chat_model))) 
+0

素晴らしい、ありがとうalot :) – jhdevuk

0

あなたのコードの範囲内JsExpへJOBJECTから暗黙的な変換があることが私には思えるが、それはリストを変換しません[JOBJECT ]をリスト[JsExp]に追加します。マップを次のように変更してみてください。

map(_.asJValue : JsExp) 

各要素のJsExpへの変換を開始するには十分であると思います。

+0

ちょうど試しましたが、型の不一致がありました:found:List [net.liftweb.http.js.JsExp] required:net.liftweb.http.js.JsExp。助けをありがとう:) – jhdevuk

+0

うーん...なぜコンパイラがリストを取った適用の変形があったことを示唆したのか分からない。あなたのスニペットで何をしようとしているのか、もう少し詳しく教えてもらえますか? –

+0

実際のレンダリング機能を組み込むように投稿を編集しました。再度ありがとう – jhdevuk