2011-02-06 2 views
6

Sto solo iniziando a sperimentare con jQuery e sto provando ad applicarlo a un'app CRUD molto semplice che consiste di elencare, creare, modificare le pagine di presentazione di &.jQuery-mobile e dati obsoleti nelle pagine

Ho applicato le convenzioni di markup jQuery-mobile e tutto sembra molto bello. Tuttavia, sono confuso riguardo al problema dell'aggiornamento dei dati non aggiornati. Capisco che jQuery-mobile ignora i collegamenti e l'invio dei moduli con AJAX per fornire una 'app di una pagina'. Ancora una volta, questo sta funzionando per me e tutto il mio materiale data-role="page" è in fase di caricamento e transizione correttamente.

Quello che non capisco è che quando modifico i dati, (ad esempio, invio un modulo per creare un nuovo elemento e tornare alla pagina 'elenco') alcune pagine devono essere aggiornate dal server per raccogliere il dati modificati. Quello che fa jQuery-mobile è semplicemente la visualizzazione della pagina caricata in precedenza che è ormai obsoleta. Allo stesso modo, ogni volta che visito di nuovo la 'pagina di creazione' per creare un altro nuovo elemento, il modulo è ancora compilato dal precedente invio in quanto la pagina non si sta effettivamente aggiornando.

Se questo è qualcosa che ho bisogno di sceneggiarlo, va bene, ma sono curioso che non sembra esserci alcuna menzione di quello che avrei pensato fosse uno scenario comune nei documenti jQuery-mobile. Mi sento come se mi mancasse qualcosa di ovvio. Come sono gestite le altre persone?

+0

AFAIK Funziona in questo modo. JQM carica le pagine esterne nel DOM corrente e lo tratta come una sorta di cache. Prendi in considerazione la possibilità di rimuovere una pagina con id = some.html forzando un nuovo download. Inoltre: ottieni JQM alpha3 se stai lavorando con quello vecchio. – naugtur

risposta

6

La tecnica rel = external causa problemi altrove, ad es. non è possibile distribuire un'applicazione ipad a schermo intero che utilizza rel = external.

Ho avuto esattamente lo stesso problema. Sto armeggiare con alcune patch che sono stati pubblicati here

ho incollato il seguente subito dopo il mio <script src="../../Scripts/jquery.mobile-1.0a4.1.min.js" type="text/javascript"></script> di riferimento:

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> 

Ho poi aggiunto l'attributo data-cache come segue:

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

Questo sembra aver aiutato molto, anche se ho ancora alcuni problemi relativi ai reindirizzamenti da fare con la sicurezza di ASP.NET.

2

La mia soluzione per un problema simile era di aggiungere rel = esterno alle pagine che vengono aggiornate dinamicamente. Vorrei che esistesse un metodo per "re-memorizzare" una pagina quando il contenuto dinamico è stato aggiunto

+0

Dove stai posizionando questo tag? Ho un modulo di invio e ho provato il pulsante, il modulo e la pagina e non funziona nulla. –

+0

Phil the rel = external fa riferimento a un elemento di collegamento. In particolare quello che ti porta alla pagina che ha il contenuto aggiornato dinamicamente. I moduli funzionano diversamente dai collegamenti. Vorrei iniziare qui: http://jquerymobile.com/test/docs/forms/docs-forms.html – David

+0

Questo mi ha aiutato con un problema che avevo utilizzato ASP.NET MVC3. Stavo cercando di aggiungere un semplice collegamento di ritorno a una pagina che conteneva un modulo che utilizzava POST. Quando il link è stato cliccato, non avrebbe "aggiornato" la pagina come volevo. L'aggiunta di rel = "external" al link ha risolto il problema. Grazie! –