Shouldn't this $apply be removed and, instead, wrap the call to the popup service ? like this:

 $scope.$apply(function() {
    gaPopup.create({
        title: feature.get('name'),
        content: feature.get('description'),
        x: pixel[0],
         y: pixel[1]
     }).open($scope);
 });