Pergunta

Eu estou tentando descobrir como atualizar uma tapeçaria zona usando uma dinâmica, do lado do cliente-orientado "contexto".Eu sou bastante novo para tapeçaria, e eu estou preso com 5.0 para agora.

O principal motivo para isso é a reutilização de outro tapeçaria componente como um filho de um diálogo jquery, sem ter que reescrever a tapeçaria componente.

Um problema é que o horário, e cada um dos elementos, controlá-lo, acabar dentro de um diálogo jquery.$jquery(...).dailog() tende a recortar/colar um elemento html para outro local, o que pode ser quebrando algo.No entanto, eu não tenho sido capaz de fazer as coisas de trabalho, mesmo fora de um diálogo jquery.

Aqui está o que eu tentei, que não parecem funcionar (talvez o que eu fiz de errado):

  • Criar um eventlink vinculado à zona, e modificar o href.Tapeçaria parece usar uma variável armazenada em algum lugar, em vez suspiro.
  • Criar uma t:formulário vinculado à zona.Quando eu tento atualizar ele, eu posso dizer que um do lado do servidor de eventos está ocorrendo, mas a tapeçaria zona de não alterar ou atualizar como deveria.A zona está localizado fora e separado do formulário.Eu nem vejo o típico flash amarelo quando uma zona é atualizada.
Foi útil?

Solução

Eu encontrei alguns exemplos de código que praticamente resolve o meu problema;ele não tinha vindo a trabalhar, mas como eu digitei a pergunta aqui sobre ISSO, eu vi que estava errado.Uma vez que é provável que alguém mais tem esse problema também, eu posto aqui a resposta:

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

Para resolver o problema com jquery .diálogo() movimento de html, eu também tenho que copiar e preservar a zona do gestor como este:(onde o $J(...) é o meu abreviatura para jquery, para evitar protótipo de conflitos)

    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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top