2015-01-28 15 views
11

Qual è la ragione per cui $ destroy() esiste in Angularfire?

La documentazione di angularfire sais:

https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebasearray-destroy

interrompere l'ascolto per eventi e memoria libera usati da questo array (svuota la copia locale). Le modifiche non sono più sincronizzate con o da Firebase.

sync = $firebase(ref).$asArray(); 
... 
.... 
sync.$destroy() 

Posso non solo fare:

sync = null 

o

delete sync 

O dovrei davvero usare $ destroy() per qualche motivo?

+0

[Guardando questa linea] (https://github.com/firebase/angularfire/blob/master/src/FirebaseObject.js#L133) è sembra che tu non abbia bisogno di chiamare anche $ destroy se stai distruggendo l'ambito. Se non stai distruggendo l'ambito dovresti fare qualcosa di simile a [questo] (https://github.com/firebase/angularfire-seed/blob/master/app/account/account.js#L8-L19) –

risposta

4

Il $destroy()exists to empty the data and unbind event listeners. Se è necessario separare la $firebaseArray() o $firebaseObject() si potrebbe usare $destroy() ma penso che sarebbe meglio utilizzare la funzione unbind che viene risolto.

Questo è stato frammento di codice è stato preso da angularfire-seed

var unbind; 
    // create a 3-way binding with the user profile object in Firebase 
    var profile = $firebaseObject(fbutil.ref('users', user.uid)); 
    profile.$bindTo($scope, 'profile').then(function(ub) { unbind = ub; }); 

    // expose logout function to scope 
    $scope.logout = function() { 
    if(unbind) { unbind(); } 
    profile.$destroy(); 
    ... 
    };