Atualizando uma tapeçaria de zona com o contexto dinâmico
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.
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;