Skip to content

Commit 81a7bd7

Browse files
committed
unsubscribe from Redux when AngularJS app is destroyed
1 parent 243ec51 commit 81a7bd7

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

Diff for: src/components/ngRedux.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export default function ngReduxProvider() {
6363
},
6464
};
6565

66-
this.$get = ($injector) => {
66+
this.$get = ($injector, $rootScope) => {
6767
const resolveMiddleware = middleware => isString(middleware)
6868
? $injector.get(middleware)
6969
: middleware;
@@ -107,10 +107,10 @@ export default function ngReduxProvider() {
107107

108108
const mergedStore = assign({}, store, { connect: Connector(store) });
109109

110-
if (_providedStore) wrapStore(_providedStore, mergedStore);
110+
if (_providedStore) wrapStore(_providedStore, mergedStore, $rootScope);
111111

112112
return mergedStore;
113113
};
114114

115-
this.$get.$inject = ['$injector'];
115+
this.$get.$inject = ['$injector', '$rootScope'];
116116
}

Diff for: src/components/storeWrapper.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
export default function wrapStore(providedStore, ngReduxStore) {
2-
providedStore.subscribe(() => {
1+
export default function wrapStore(providedStore, ngReduxStore, $rootScope) {
2+
const unsubscribe = providedStore.subscribe(() => {
33
let newState = providedStore.getState();
44
ngReduxStore.dispatch({
55
type: '@@NGREDUX_PASSTHROUGH',
66
payload: newState
77
});
88
});
99
providedStore.dispatch({ type: '@@NGREDUX_PASSTHROUGH_INIT' })
10+
$rootScope.$on('$destroy', unsubscribe)
1011
}

0 commit comments

Comments
 (0)