È possibile effettuare le seguenti operazioni:
$rootScope = $rootScope.$new(true);
$scope = $scope.$new(true);
La funzione $new
sta creando un nuovo ambito che eredita le variabili dal genitore. true
impedisce l'ereditarietà.
Ma questo non è l'approccio corretto, perché se si utilizza la cosa di cui sopra, è necessario eseguire il boot delle funzioni dei controller manualmente e ricreare l'albero degli ambiti.
This potrebbe essere utile tuttavia, in cui l'idea è quella di memorizzare i dati inizializzati è memorizzato in alcune variabili e quindi, quando assegnato copiato alle variabili visualizzate.
La soluzione corretta è quella di cancellare manualmente ogni proprietà in ogni ambito l'evento di disconnessione in questo modo: evento Esci:
$rootScope.$emit("logout");
Facendo l'evento:
$rootScope.$on("logout", function(){
$rootScope.myData = undefined;
});
O come suggerito nella commenti, per utilizzare un servizio e quindi essere pulito.
Qui trovi alcuni metodi per raggiungere tale: http://stackoverflow.com/questions/13085024/reset-a-model-with-angular-js – frhd
@frhd. Grazie è chiaro. Usando questo esempio possiamo cancellare i valori di $ scope nel controller particolare. Ma voglio cancellare tutti i valori $ scope in tutti i controller durante signout. È possibile? Se sì, dammi il tuo suggerimento/soluzione .. – Gnik
Non penso che ci sia un modo di tipo one-liner per cancellare tutti gli scopi. Come scritto qui http://stackoverflow.com/a/18527334/2491198, dovresti notificare a tutti gli ambiti di cancellare i loro dati. Un modo per evitare di doverlo fare è memorizzare i dati in un ** DataService ** e cancellarli al logout. – frhd