我的目標是在初始加載時使文本顯示正常,但是當按下「編輯」按鈕時,文本將更改爲輸入文本框。在HTML是這樣的:ajaxButton在使用電梯接線時不起作用
<div class="user">
<div>
<span>Edit</span><lift:WiredUser.edit />
</div>
<div class="details">
<lift:WiredUser.email />
</div>
</div>
我的配線類看起來像這樣:
class WiredUser {
val userToWire = (Users.userForDisplay or userDetail.currentValue).get
private object User {
val entity = ValueCell(userToWire)
val edit = ValueCell(false)
val email = edit.lift(b => entity.lift(_.getEmail.asScala.headOption).get)
}
def edit = {
WiringUI.toNode(User.edit, JqWiringSupport.fade)((mode: Boolean, ns:NodeSeq) => { Wired.editable(
mode,
mode,
(b: Boolean) => ajaxButton(h("Done"),() => {User.edit.set(false); JsCmds.Noop}),
(b: Boolean) => ajaxButton(h("Edit"), () => {User.edit.set(true); JsCmds.Noop})
)})
}
def email = WiringUI.toNode(User.email, JqWiringSupport.fade)((email: Option[String], ns: NodeSeq) => {
Wired.editable(
email.getOrElse(""),
User.edit.get,
(n: String) => ajaxText(n, s => {refresh(setEmail(_, s)); JsCmds.Noop}),
(n: String) => h(n)
)
})
}
object Wired {
def editable[T](o: T, mode: Boolean, t: (T)=> NodeSeq, f: (T) => NodeSeq) : NodeSeq = {
mode match {
case true => t(o)
case false => f(o)
}
}
}
在初始負載,存在着顯示的「編輯」按鈕。當按下該按鈕時,會執行一個帶有格式數據「F531904251245BAWYT:true」的ajax調用,但是附加到ajax調用的函數不會執行:()=> {User.edit.set(true); JsCmds.Noop}並且結果爲空:
jQuery(document).ready(function() {
});
有關我可能會丟失什麼的任何想法?
請注意,我已將此郵件提交給Lift組,但沒有回覆。
我創建了一個工作示例: https://github.com/OleTraveler/scala-wiring-example
謝謝你的職位。現在我已經轉向了另一個功能,所以在我可以測試這個功能前幾個星期。 – OleTraveler 2011-04-15 15:23:26