2011-02-13 2 views
4

정말 간단합니다. <select>이 있는데 선택에 따라 내부 상태를 업데이트하고 싶습니다. 아무 것도 다시 표시 할 필요가 없습니다. 문제는 선택 및 AJAX 요청이 이루어진 후에 목록의 내용이 손실된다는 것입니다.Seaside : 업데이트시 내용 손실 목록

renderContentOn: html 
|value myId| 
    html form with: [ 
     html select list: #('one' 'two' 'tree' 'four' 'five'); 
      id: (myId := html nextId); 
      callback: [ :v | value := myId ]; 
      onChange: (
       html prototype updater 
        triggerFormElement: myId; 
        callback: [:h | value "do something with the value here"]; 
        return: false 
       ). 
    ] 

답변

3

#updater에는 업데이트 할 요소의 DOM ID가 필요합니다. ID를 제공하지 않으면 기본값은 this이고 DOM 요소는 이벤트를 트리거합니다. 따라서 빈 목록이 생깁니다. 무언가를 업데이트 할 필요가 없다면 #updater 대신 #request을 사용해야합니다. 업데이트하려면 #id:을 사용하여 유효한 ID를 제공해야합니다.

Seaside Book의 AJAX: Talking back to the Server 섹션을 읽고 AJAX에 대해 자세히 설명합니다.

1

업데이트 프로그램이 콜백에 의해 생성 된 내용에 정의 된 요소의 HTML을 대체하고 콜백은 어떤 HTML을 생성하지 않기 때문에, 목록이 비어, 나는 생각한다.

관련 문제