2015-01-28 14 views
11

Lý do mà $ destroy() tồn tại trong Angularfire là gì?

Các tài liệu của angularfire sais:

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

Dừng nghe cho các sự kiện và giải phóng bộ nhớ được sử dụng bởi mảng này (đổ bản sao cục bộ). Các thay đổi không còn được đồng bộ hóa với hoặc từ Firebase nữa.

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

Tôi có thể không chỉ làm:

sync = null 

hoặc

delete sync 

Hoặc nên tôi thực sự sử dụng $ phá hủy() vì một lý do?

+0

[Nhìn vào dòng này] (https://github.com/firebase/angularfire/blob/master/src/FirebaseObject.js#L133) nó xuất hiện bạn có thể không cần phải thậm chí gọi $ hủy nếu bạn đang phá hủy phạm vi. Nếu bạn không phá hủy phạm vi, bạn nên làm điều gì đó tương tự như [this] (https://github.com/firebase/angularfire-seed/blob/master/app/account/account.js#L8-L19) –

Trả lời

4

Các $destroy()exists to empty the data and unbind event listeners. Nếu bạn cần unbind $firebaseArray() hoặc $firebaseObject() bạn có thể sử dụng $destroy() nhưng tôi nghĩ rằng nó sẽ đẹp hơn để sử dụng chức năng unbind đó được giải quyết.

Đây là đoạn mã được lấy từ 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(); 
    ... 
    };