2009-04-17 13 views
6

Asansörle çalışmaya başladım ve şimdi normal formunu ajax biçimine dönüştürmeye çalışıyorum ancak processEntryAdd yöntemi hiçbir zaman aranmıyor.Scala kaldırma çerçevesi, birden çok değeri gönderen ajax formu?

def addUser(xhtml : Group) : NodeSeq = { 

    var firstName = "" 
    var lastName = "" 

    def processEntryAdd() { 
     Log.info("processEntryAdd: " + firstName + ", " + lastName) 
    } 

    SHtml.ajaxForm(
     bind("entry", xhtml, 
      "firstName" -> SHtml.text(firstName, 
       (x) => { 
        Log.info("Setting firstName to " + x); 
        firstName = x 
       }), 
      "lastName" -> SHtml.text(lastName, 
       (x) => { 
        Log.info("Setting lastName to " + x); 
        lastName = x 
       }), 
      "submit" -> SHtml.submit("Add user", processEntryAdd), 
     )) 
} 

Yapmaya çalıştığım şeyi nasıl elde edeceğimi veya yukarıdaki kodun neden çalışmadığını öğrenin. Düğmeye basıldığında iki form alanı değerleri sunulur ve iki yerel firstName ve lastName değişkenleri ayarlanır, ancak SHtml.submit ile ilişkili işlev çağrılmaz.

Teşekkürler! (ProcessEntryAdd, "Kullanıcı ekle")> SHtml.hidden ++ asansör posta listesinde

- Bu soruya David Pollak cevaben

cevap

1

"Gönder"

kullanarak önerdi.

+0

Ve bu çalışır, ancak maalesef yok Bütün problemi çöz. Hala eksik olduğum bulmacanın bir kısmı, ajax yanıtından sonra sayfanın bir bölümünü yeniden oluşturuyor. – ivans

9

Bu soru eski türüdür, ama son zamanlarda bu kendimi biliyorum gerekiyordu ve bu şimdiye kadar gördüğüm en iyi çözümdür:

ajaxForm(
    bind("entry", xhtml, 
     "firstName" -> text(firstName, firstName = _), 
     "lastName" -> text(lastName, lastName = _), 
     "submit" -> submit("Add user", processEntryAdd _), 
    ) ++ hidden(processEntryAdd _) 
) 

bir gizli form öğesinin size işlemeyi ekleyerek herhangi bir görünüm kodunu değiştirmeden, gönder düğmesini tutmak için olsun.

http://www.assembla.com/wiki/show/liftweb/ajaxForm

, altına gidin, burada
def processEntryAdd() { 
    Log.info("processEntryAdd: " + firstName + ", " + lastName) 
    JsRaw("alert('process entry added')") 
} 
+0

Teşekkürler, bu yakında denemek için kolay bir çözüm gibi görünüyor. – ivans

+0

Son snippet'te, 'process' 'processEntryAdd'nın otomatik olarak' Unit' olmasını önlemek için '=' olmalıdır. – Owen

1

cevabı (< sonra ilk boşluğu görmezden):

Sen processEntryAdd alarak istemci tarafı davranışını ekleyebilir() bir JsCmd dönmek

"gönder" -> (SHtml.hidden (auth) ++ < giriş türü = "gönder" value = "Giriş" />)

İlgili konular