2015-04-20 26 views
6

Ho creato un'app basata su sidemenu, in quanto dopo aver effettuato il login sto visualizzando un numero di attività. Se faccio clic sull'attività verrà reindirizzato alla pagina dei dettagli dell'attività, in quella pagina posso aggiornare le attività.Come ricaricare la vista ionica?

Quindi, dopo aver aggiornato un'attività, è necessario tornare alla pagina precedente dell'elenco attività. Sto usando $ionicHistory.goBack(); per tornare indietro.

Il mio problema è dopo essere tornato, ho bisogno di aggiornare l'elenco delle attività i.e. l'attività aggiornata non dovrebbe essere lì nell'elenco delle attività. Come posso aggiornare/ricaricare l'elenco delle attività?

+0

Procedura per questa zona Vedi ionico quando tornare indietro 1. Configurazione disabilitare la cache in ionic e refresh view 2. Disabilitare la cache in vista. dai un'occhiata a questo video https://www.youtube.com/watch?v=HExPUfuaRwU o questo link http://www.codeandyou.com/2017/08/how-to-refresh-view-in-ionic. html – virender

risposta

9

Se si associa il vostro compito a un array tasks, che sarà utilizzato nella pagina task list, dovrebbe!. essere aggiornato automaticamente

Ma la domanda è di non visualizzare, attività aggiunte di recente (il mio suggerimento precedente dovrebbe funzionare) in caso contrario, le viste ioniche dei motivi di prestazioni sono memorizzate nella cache, quindi quando si ritorna alla vista precedente non lo fa passare attraverso il normale ciclo di caricamento, ma voi 2 opzioni

1 - disabilitare caching utilizzando <ion-view cache-view="false" view-title="My Title!"> nel proprio ion-view, ma questa non è una soluzione molto elegante. read more

2 - utilizzare ionRefresher (il mio preferito). read more here

+0

Grazie amico funziona. grazie mille –

+0

@ user3190207, ottimo .. spero tu accetti la mia risposta: D – sameera207

+0

HI ho ancora una domanda, ho bisogno di inviare la mia attuale latitudine e longitudine al servizio web in ogni 5 mint mentre l'app è in stato di background. puoi per favore aiutare? –

2

https://github.com/angular-ui/ui-router/issues/582

secondo il @ hpawe01 "Se si utilizza l'ionicframework corrente (ionica: v1.0.0-beta.14, angularjs: v1.3.6, angolare-ui-router: v0.2.13), il il problema con il controller di non ricarica potrebbe essere causato dal nuovo sistema di ionizzazione del caching: Si noti che poiché stiamo memorizzando queste viste in cache, non stiamo distruggendo gli ambiti, ma gli ambiti vengono disconnessi dal ciclo di osservazione. non vengono distrutti e ricreati, i controllori non vengono caricati di nuovo in una successiva visualizzazione Esistono diversi modi per disattivare la memorizzazione nella cache. Per disattivarla solo per un singolo stato, aggiungere solo cache: false alla definizione dello stato. lem per me (dopo ore di lettura, prova, frustrazione). Per tutti gli altri che non utilizzano ionicframework ed ancora di fronte a questo problema: in bocca al lupo "

Spero che questo aiuti

+0

Grazie ti farà sapere il risultato.thanl molto –

+0

funziona grazie mille –

+0

Nessun problema! Era bloccato in qualche altro problema ho trovato questo errore, ho dovuto leggere oltre 18 mesi di commenti per trovare questo. – snehil

0

Per il tuo compito puoi anche utilizzare ion-nav-view.

È ben documentato. E se stai usando ora Ionic 2 beta puoi usare alcuni ganci di vista come onPageWillLeave() o onPageWillEnter(). Ho appena affrontato lo stesso problema e definito una funzione refresh(), ma l'utente doveva fare clic su un pulsante per aggiornare effettivamente la vista. Ma poi ho trovato:

https://webcake.co/page-lifecycle-hooks-in-ionic-2/

Non vi resta che importare il modulo di pagina e NavController e anche definirlo nel costruttore. La si può usare per esempio onPageWillEnter(), che sarà sempre richiamare quando si va di nuovo a una visione:

onPageWillEnter() { 
    // Do whatever you want here the following code is just to show you an example. I needed it to refresh the sqlite database 
    this.storage.query("SELECT * FROM archivedInserates").then((data) = > { 
      this.archivedInserates =[]; 
    if (data.res.rows.length > 0) { 
     for (var i = 0; i < data.res.rows.length; i++) { 
      this.archivedInserates.push({userName:data.res.rows.item(i).userName, email: 
      data.res.rows.item(i).email}); 
     } 
    } 
    },(error) =>{ 
     console.log("ERROR -> " + JSON.stringify(error.err)); 
    }); 
} 

Con beta ionica 8 eventi lifecylcle cambiato i loro nomi. Controlla lo official ionic blog per l'elenco completo degli eventi del ciclo di vita.

1

È anche possibile ascoltare eventi ionici come $ionicView.enter su $scope e attivare il codice che aggiorna l'elenco se non è stato associato l'elenco come suggerito da @ sameera207.

EG:

// List.controller.js 

angular.module('app') 
    .controller('ListController', ['$scope', function($scope) { 

    // See http://ionicframework.com/docs/api/directive/ionView/ for full events list 
    $scope.$on('$ionicView.enter', function() { 
     _someCodeThatFetchesTasks() 
      .then(function(tasks) { 
       $scope.tasks = tasks; 
      }); 
    }); 

}); 

Tenete a mente che non è il modo più adeguato (se corretta a tutti), e se si esegue questa operazione certamente un difetto di progettazione. Invece dovresti condividere lo stesso array di dati tramite un factory o un service per esempio.

0

se si sta costruendo i dati guidato app quindi assicurarsi uso $ionicConfigProvider.views.maxCache(0); nel vostro app.config in modo che ogni revisione può aggiornare per maggiori dettagli leggere questo http://ionicframework.com/docs/api/provider/ $ ionicConfigProvider/

Problemi correlati