@@ -45,25 +45,42 @@ dop.core.observer.prototype.observe = function(path_id, type) {
4545}
4646
4747dop . core . observer . prototype . destroy = function ( ) {
48- var path_id ,
49- data_path = dop . data . path
50-
51- delete dop . data . observers [ this . id ]
48+ var path_id
49+ var data_path = dop . data . path
50+ var path_ids = { }
5251
5352 // Removing observeProperty
5453 for ( path_id in this . observers_prop ) {
54+ path_ids [ path_id ] = true
5555 delete data_path [ path_id ] . observers_prop [ this . id ]
56+ if ( isEmptyObject ( data_path [ path_id ] . observers_prop ) )
57+ delete data_path [ path_id ] . observers_prop
5658 }
5759
5860 // Removing observeObject
5961 for ( path_id in this . observers ) {
62+ path_ids [ path_id ] = true
6063 delete data_path [ path_id ] . observers [ this . id ]
64+ if ( isEmptyObject ( data_path [ path_id ] . observers ) )
65+ delete data_path [ path_id ] . observers
6166 }
6267
6368 // Removing observeAll
6469 for ( path_id in this . observers_all ) {
70+ path_ids [ path_id ] = true
6571 delete data_path [ path_id ] . observers_all [ this . id ]
72+ if ( isEmptyObject ( data_path [ path_id ] . observers_all ) )
73+ delete data_path [ path_id ] . observers_all
6674 }
75+
76+ // Removing path_ids
77+ for ( path_id in path_ids ) {
78+ if ( isEmptyObject ( data_path [ path_id ] ) ) {
79+ delete data_path [ path_id ]
80+ }
81+ }
82+
83+ delete dop . data . observers [ this . id ]
6784}
6885
6986function observerCheckObject ( object , method ) {
0 commit comments