2009-04-17 11 views
6

मैं बस लिफ्ट के साथ शुरू कर रहा हूं और अब मैं एक सामान्य फॉर्म को अजाक्स रूप में बदलने की कोशिश कर रहा हूं लेकिन विधि processEntryAdd कभी नहीं कहा जाता है।स्कैला लिफ्ट फ्रेमवर्क, AJAX फ़ॉर्म जो एकाधिक मान सबमिट करता है?

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), 
     )) 
} 

कोई विचार है कि मैं क्या करने की कोशिश कर रहा हूं, या उपर्युक्त कोड क्यों काम नहीं कर रहा है। बटन को दबाए जाने पर दो फॉर्म फ़ील्ड के मान सबमिट किए जाते हैं और दो स्थानीय चर firstName और lastName सेट होते हैं लेकिन SHtml.submit से जुड़े फ़ंक्शन को नहीं कहा जाता है।

धन्यवाद! (ProcessEntryAdd "उपयोगकर्ता जोड़ें",)> SHtml.hidden ++

लिफ्ट मेलिंग सूची पर

-

उत्तर

1

इस सवाल डेविड पोलाक के जवाब में

का उपयोग कर "सबमिट करें" का सुझाव दिया।

+0

और यह काम करता है, लेकिन दुर्भाग्य से नहीं करता है पूरी समस्या को हल नहीं करते हैं। जिस पहेली को मैं अभी भी याद कर रहा हूं उसका एक हिस्सा AJAX प्रतिक्रिया के बाद पृष्ठ का एक हिस्सा पुनः प्रस्तुत करना है। – ivans

9

यह सवाल वर्ष की तरह है, लेकिन मैं हाल ही में इस अपने आप को पता है की जरूरत है, और यह सबसे अच्छा समाधान मैं अब तक देखा है है:

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

एक गुप्त फ़ॉर्म आप तत्व को प्रसंस्करण जोड़ कर किसी भी व्यू कोड को बदले बिना सबमिट बटन को रखने के लिए मिलता है। ,

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

धन्यवाद, यह जल्द ही कोशिश करने जा रहा है, यह एक आसान समाधान की तरह दिखता है। – ivans

+0

अंतिम स्निपेट में, 'processEntryAdd' स्वचालित रूप से' यूनिट 'बनने से रोकने के लिए '=' होना चाहिए। – Owen

1

यहाँ जवाब, नीचे स्क्रॉल (< के बाद पहली अंतरिक्ष की अनदेखी)

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

:

आप processEntryAdd होने से ग्राहक के पक्ष व्यवहार जोड़ सकते हैं() वापसी एक JsCmd

"सबमिट करें" -> (SHtml.hidden (auth) ++ < इनपुट प्रकार = "सबमिट करें" मूल्य = "लॉगिन" />)

संबंधित मुद्दे