2011-02-06 12 views
6

Estoy empezando a experimentar con jQuery y tratando de aplicarlo a una aplicación CRUD muy simple que consiste en mostrar, crear, editar & mostrar páginas.jQuery-mobile y datos obsoletos en las páginas

He aplicado las convenciones de marcado jQuery-mobile y todo se ve muy bien. Sin embargo, estoy confundido sobre el problema de actualizar los datos obsoletos. Entiendo que jQuery-mobile anula los enlaces y el envío de formularios con AJAX para entregar una 'aplicación de una página'. De nuevo, esto está funcionando para mí y todas mis cosas data-role="page" se están cargando y haciendo la transición correctamente.

Lo que no entiendo es que cuando modifico datos, (por ejemplo, enviar un formulario para crear un nuevo elemento y luego volver a la página 'lista') ciertas páginas deben actualizarse desde el servidor para recoger el datos modificados. Lo que hace jQuery-mobile es simplemente volver a mostrar la página cargada previamente que ahora está obsoleta. Del mismo modo, cada vez que vuelvo a visitar la 'página de creación' para crear otro elemento nuevo, el formulario todavía se completa desde el envío anterior ya que la página no es realmente refrescante.

Si esto es algo que necesito para escribirme, está bien, pero tengo curiosidad de que no parezca haber ninguna mención de lo que habría pensado que era un escenario común en los documentos de jQuery-mobile. Se siente como si me falta algo obvio. ¿Cómo están manejando esto otras personas?

+0

AFAIK Simplemente funciona de esa manera. JQM carga páginas externas al DOM actual y las trata como un tipo de caché. Considere eliminar una página con id = some.html forzando una nueva descarga. Además, obtenga JQM alpha3 si está trabajando con el anterior. – naugtur

Respuesta

6

La técnica rel = external causa problemas en otros lugares, p. no puede implementar una aplicación de ipad en pantalla completa que use rel = external.

Tuve exactamente el mismo problema. Estoy jugando con algunos parches publicados here

me pega el siguiente justo después de mi <script src="../../Scripts/jquery.mobile-1.0a4.1.min.js" type="text/javascript"></script> referencia:

script type="text/javascript"> 

    $('div').live('pagehide', function(event, ui){ 
     var page = jQuery(event.target); 
     //alert('point 6875654'); 
     if(page.attr('data-cache') == 'never'){ 
     //alert('removing jqm history page'); 
     page.remove(); 
     }; 
    }); 

    </script> 

Luego añade el atributo de caché de datos de la siguiente manera:

<div class="page" data-role="page" data-cache="never"> 

Esto parece haber ayudado mucho, aunque todavía tengo algunos problemas relacionados con los redireccionamientos relacionados con la seguridad de ASP.NET.

2

Mi solución para un problema similar fue agregar rel = external a las páginas que se actualizan dinámicamente. Desearía que hubiera un método para "volver a almacenar en caché" una página cuando se agrega contenido dinámico

+0

¿Dónde está colocando esta etiqueta? Tengo un formulario de envío y he probado el botón, formulario y página y nada funciona. –

+0

Phil the rel = external se refiere a un elemento de enlace. Específicamente, el que lo lleva a la página que tiene el contenido actualizado dinámicamente. Las formas funcionan de forma diferente que los enlaces. Empezaría aquí: http://jquerymobile.com/test/docs/forms/docs-forms.html – David

+0

Esto me ayudó con un problema que tenía al usar ASP.NET MVC3. Intentaba agregar un enlace posterior simple a una página que contenía un formulario que usaba POST. Cuando se hizo clic en el enlace, no "actualizaba" la página como yo quería. Agregar rel = "external" al enlace solucionó ese problema. ¡Gracias! –

Cuestiones relacionadas