まず、あなたはあなたの理事クラスからHTMLを生成する方法を知っておく必要があります。サーバーから
、scala.XMLクライアントから
、
その後、あなたはクライアントから呼び出すことができますAJAXサーバー側の関数を作成するJavaScript: は二つの選択肢があります:
def render = {
import JsCmds._
var board = initBoard()
def moveAction(s: String): JsCmd = {
val moveXY = parseXY(s) // s should be like "{x: 1, y: 2}"
board = move(board, moveXY) // your logic here
val newBoardToSend = boardToCmd(board) // generate board HTML or json here
Call("renderBoard", newBoardToSend) // call the client-side render function
}
val script = S.fmapFunc(S.contextFuncBuilder(moveAction _)) { funcName => {
val func = JsRaw("'" + funcName + "='") + Call("encodeURIComponent", LiftRules.jsArtifacts.jsonStringify(JsRaw("{x:x,y:y}")))
JsCmds.Function(
"moveIt", // the js function name you will call
"x" :: "y" :: Nil,
SHtml.makeAjaxCall(func).cmd
)
}} // generate a client ajax function: function moveIt(x, y)
yourRenderXml ++ <tail>{JsCmds.Script(script)}</tail>
}
最後に、クライアント機能「reあなたのページにボードをレンダリングするためにnderBoard(b) "クライアントがクリックして移動すると「moveIt(x、y)」と呼びます
こんにちはiron9light、ありがとう!もう少し手伝ってもらえますか?リフトは現時点で私を非常に混乱させています。私のメールアドレス:[email protected] – user1137701
ここにお問い合わせいただくか、[forum](https://groups.google.com/forum/#!forum/liftweb) – iron9light