2011-12-13 2 views
4

이것은 아마도 어리석은 질문이지만 어떻게 처리해야 하는지를 알 수 없습니다. 그래서 Scala/Lift에 익숙하지 않고 http://simply.liftweb.net/index-4.8.html#toc-Section-4.8에서 Ajax 양식 장을 읽었지만 예제에서 "RedirectTo"는 나에게 "ajaxian"이 아닌 것 같습니다. 종종 아약스를 통해 양식을 제출하는 경우, 당신은 부분적으로 동일한 페이지를 다시 렌더링하겠습니까? 그게 바로 내가하려는 일이고 지금 당장은 완전히 실패하고 있습니다. ajax를 통해 양식을 제출 한 후 Lift가 같은 페이지의 일부만 다시 렌더링하도록하려면 어떻게해야합니까?리프트 (스칼라)에서 양식을 아약스 제출 후 페이지의 일부를 다시 렌더링하는 방법

힌트를 보내 주시면 감사하겠습니다. 감사.

<div id="main" class="lift:surround?with=default;at=content"> 
    <h2>Welcome to your project!</h2> 
    <div class="lift:Test"> 
     <div> 
      <form class="lift:form.ajax"> 
       <fieldset> 
        <label for="name">Name:</label> 
        <input id="name" name="name" type=text> 
        <p></p> 
        <input id="save" type="submit" value="Save"> 
       </fieldset> 
      </form> 
     </div> 
     <div> 
      <span id="theName">Name</span> 
     </div> 
    </div> 
</div> 

class Test { 

    def render = { 
    var name = "" 

    def process(): JsCmd = { 
     Thread.sleep(500) 

     S.notice("Entered name is: %s".format(name)) 
     Noop 
    } 

    "#theName " #> "This shall be updated with the name given in the form above" & 
    "#name" #> (SHtml.text(name, name = _) ++ SHtml.hidden(process)) 
    } 
} 

어떻게 "theName는"양식을 제출하면 업데이트 할 것입니다 :

는 기본적으로, 내가 가지고있는 것은 다음과 같습니다?

+0

만약 당신이 이것을하는 법을 알고 있다면, pls를 설명 할 수 있습니다. 나는 리프트와 혜성없이 아약스를 사용하고 싶다. – Rajesh

답변

2

http://lift.la/shtmlidmemoize-simple-ajax-updating (Example Code)을 살펴보십시오. 자동으로 HTML 코드를 캐시하는 SHtml.memoizeSHtml.idMemoize이 있습니다. 이 예제에서 Simply Lift 책에 사용되지 않은 이유를 잘 모릅니다.

+0

힌트를 보내 주셔서 감사합니다. 그러나 저는 아직도 그 방법을 모릅니다. 필자는 페이지에 두 부분으로 구성되어 있습니다 : 새 항목과 양식 목록을 추가하는 양식 (양식을 제출 한 후 업데이트하고 싶습니다). 기본적으로 단순히 2 장의 채팅 예제처럼 들립니다. 나는 혜성을 사용하고 싶지 않다는 것을 제외하고는 - 내가 성취하고자하는 것에 대해 과도한 공격이 될 것 같다. 그 방향으로 가고있는 좀 더 정교한 예를 알고 있습니까? – heapifyman

0

2 단계 형식이 맞습니까? 위의 포스터는 정확합니다.

변형을 RequestVar에 저장하십시오. (1 개 요청 지속) 당신이 RequestVar이 memoized 변환을 절약 할 수 있습니다, 그리고

private def renderTest= SHtml.memoize { render } 

를, 또는 :

당신의 위의 예에서

, 저장하고자하는 방법은 그래서 1 memoize는 변환, 렌더링 아마도 귀하의 필요에 따라 TransientRequestVar 일 것입니다. testTemplate.is.applyAgain을 -

private object testTemplate extends RequestVar(renderTest) 

당신이이 아약스 이벤트에서, 변환 재생 할

.

2 단계 양식을 원한다면 b/c 원래의 질문을 오해했을 수도 있습니다. 실제로 메모를하지 않아도됩니다. 메모는 현재 양식에서 무엇인가가 변경되고 ajax 이벤트 (즉, 클릭 또는 변경시)를 통해 업데이트하려는 경우입니다. 보통 ajax를 제출하지 않으면 양식이 업데이트되지 않습니다.

관련 문제