Change made to $scope variable through event captured by $rootScope doesn’t update in view

I have a somewhat old ionic App (ionic v 1.3.x). Based on certain asynchronous changes detected in another part of the App it emits $rootScope level events. I catch that event in a Controller to update the view when that event is caught. Something along the lines below.

// In a different part of the App an asynchronous event is caught
$rootScope.$emit("some:change:event", grpKey); // from asynchronous event

// In Controller
$rootScope.$on("some:change:event", function(event, param){
   reComputeValues(param);
}

function reComputeValues(param){
  $scope.someVariable = updated value;
  //$scope.$apply();
}

function reComputeValues_withApply(param){
   $scope.$apply(function(){
      $scope.someVariable = updated value;
   });
}

Even though the $scope.someVariable is being updated (I can see it when stepping through it in the debugger), the change is not reflected in the view when I am on the view. If I move away from that view and come back to the view, the page reloads and the change is there.

After digging around it first seemed the $apply call should do the trick. I did that two different ways as above (just calling $scope.$apply or encapsulating the variable update within the $apply call). While this does update the view it gives a few errors which seem to be related to some scope issue. I realized it could be because when the event is captured and the function is called it is in the context of $rootScope and the variable is updated at $scope level which is why it is not automatically updating the view and giving errors when forcing the $apply call. But $scope is also a child of $rootScope so I don’t fully understand the $rootScope and $scope interaction here and why the view is not updating.

Appreciate any pointers on how best to address this issue.

Thanks,
Sanjay.

Source: AngularJS