ng-redux icon indicating copy to clipboard operation
ng-redux copied to clipboard

AngularJS too many digest iterations when using bound thunk action function

Open frankandrobot opened this issue 9 years ago • 1 comments

I'm getting this error when I add a bound thunk action to an attribute.

angular.js:68Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

It is probably an angular issue but here's the scenario:

// setup controller
const unsubscribe = $ngRedux.connect(
      state => this.mapStateToThis(state, privileges),
   ),
   // this auto-injects the actions bound to ngRedux.dispatch
   Object.assign({}, Actions, AsyncActions)
)(this)

// thunk action creator
cancelSave(appUtilization) {
      return dispatch => {
        dispatch(AppActions.resetApp());
        appUtilization.$setPristine();
      }
 }

// template that breaks
<save-settings-panel cancel-action="$ctrl.cancelSave($ctrl.appUtilization)"></save-settings-panel>

Update: after doing a bit of research, it seems that #cancelSave will be called on each iteration of the digest loop. (See for example, http://stackoverflow.com/a/26783778/555493) Hence, the digest error.

The question then is how am I supposed to use #cancelSave without creating a proxy function in the controller?

frankandrobot avatar Oct 28 '16 15:10 frankandrobot

@frankandrobot were you able to resolve this issue? I don't believe it's ng-redux related. My guess is that whatever is calling $ctrl.cancelSave is doing so at the wrong time or in the wrong place?

AntJanus avatar Jan 08 '18 16:01 AntJanus