문제

나는 동적 클라이언트 측 구동 "컨텍스트"를 사용하여 태피스트리 영역을 업데이트하는 방법을 알아내려고 노력 중입니다.저는 태피스트리를 처음 접했고 지금은 5.0을 사용하고 있습니다.

이렇게 하는 주된 이유는 태피스트리 구성 요소를 다시 작성할 필요 없이 다른 태피스트리 구성 요소를 jquery 대화 상자의 하위로 재사용하기 위한 것입니다.

한 가지 문제는 영역과 이를 제어하는 ​​모든 요소가 jquery 대화 상자 내부에 있다는 것입니다.$jquery(...).dailog()는 요소의 HTML을 다른 위치에 잘라내거나 붙여넣는 경향이 있는데, 이로 인해 문제가 발생할 수 있습니다.그러나 jquery 대화 상자 외부에서도 작업을 수행할 수 없었습니다.

다음은 내가 시도한 것인데 작동하지 않는 것 같습니다(아마도 내가 잘못한 것 같습니다).

  • 영역에 바인딩된 이벤트링크를 생성하고 href를 수정합니다.태피스트리는 대신 어딘가에 저장된 변수를 사용하는 것 같습니다 한숨을 쉬다.
  • 영역에 바인딩된 t:form을 만듭니다.업데이트하려고 하면 서버 측 이벤트가 발생하고 있음을 알 수 있지만 태피스트리 영역이 예상대로 변경되거나 업데이트되지 않습니다.영역은 외부에 위치하며 양식과 분리되어 있습니다.영역이 업데이트될 때 일반적인 노란색 깜박임도 표시되지 않습니다.
도움이 되었습니까?

해결책

내 문제를 거의 해결하는 몇 가지 예제 코드를 찾았습니다.작동하지 않았지만 여기에 SO에 질문을 입력하면서 무엇이 잘못되었는지 확인했습니다.다른 사람도 이 문제에 직면했을 가능성이 높으므로 여기에 답변을 게시합니다.

        var zoneId = "itemZone"; // tml was <t:zone id="itemZone"...>
        var zoneObject = Tapestry.findZoneManagerForZone(zoneId);
        zoneObject.updateFromURL(url);

jquery .dialog() 이동 HTML 문제를 해결하려면 다음과 같이 영역 관리자도 복사하고 보존해야 합니다.(여기서 $J(...)는 프로토타입 충돌을 피하기 위해 jquery의 약어입니다.)

    prototypeStorageObj = $T("itemZone");
    zoneManager = prototypeStorageObj.zoneManager;
    // jquery stuff that kills the prototype data storage.
    emailForm = $J("#myDialog");
    emailForm.dialog({ autoOpen: false, modal:true });
    emailForm.dialog('open');
    // restore the zone manager so the zone works again:
    $T("itemZone").zoneManager = zoneManager;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top