請原諒我這個令人難以忍受的簡單問題,但我對Lift(和Scala)這個世界相當陌生。如何使用Lift(Scala框架)將注意力集中在文本框上?
我正在關注的提升網站上的「入門」教程:http://liftweb.net/getting_started
我有它運行起來,但我想進行快速修改應用程序,這樣我每次按下文本框中的回車,它將保持焦點。我設法讓它專注於使用FocusOnLoad的頁面加載,但我不能完全弄清楚如何讓它到保持的重點(只使用Lift的類,沒有自定義JavaScript)。
這裏就是我的高清渲染方法(綁定部分)的代碼如下所示:
def render =
bind("chat", // the namespace for binding
"line" -> lines _, // bind the function lines
"input" -> FocusOnLoad(SHtml.text("", s => ChatServer ! s)))
讓得到它專注於網頁加載工作。但由於這是一個Comet應用程序,該頁面只加載一次。
我所有的其他代碼看起來完全像教程FWIW。
這是有道理的,我想我會試試這個。順便說一下,〜>方法做了什麼?我在哪裏可以瞭解更多其他方法,如 - %>?我試圖避免使用IDE來學習Scala(直接修改Textmate),所以我沒有從鑽取方法中獲益。 – 2010-10-04 04:36:22
'〜>'方法在'net.liftweb.http.js.JsExp'特徵上定義,它訪問JsExp的屬性。我在上面用它來調用jQuery對象的'focus'方法,該方法由我使用JqJE.Jq(JE.Str(「input [type = text]」))方法創建的jQuery選擇器返回。這些調用創建了Javascript「jQuery('input [type = text]')。focus();」找到這樣的事情最好的方法是看看Lift Google Group並挖掘源代碼。 Lift的來源是學習Scala的好方法。另請參閱http://manning.com/perrett上即將出版的書籍Lift in Action。 – Aaron 2010-10-04 11:52:12
由於我用完了空間,在'net.liftweb.util.SuperArrowAssoc'類中定義了' - %>'方法。不幸的是,該類中沒有太多的文檔,但它和'net.liftweb.util.BindHelpers'類負責處理在CometActor內部和Snippets內部調用的'bind'函數內部發生的所有事件你會創建。我絕對讚賞你在沒有IDE的情況下學習Scala。這是一個很好的方法,但起初它具有挑戰性,因爲Lift使用了許多特性,有時很難弄清楚事情的真相。 – Aaron 2010-10-04 12:06:06