title: Both ng-model and ng-change on input alter the $scope state - which one takes priority
body: <p>I have the following array of objects</p>
  <pre><code>$scope.client.systemAssessments = [
      {
          id: 0,
          name: 'Name 1',
          paused: false
      },
      {
          id: 1,
          name: 'Name 2',
          paused: false
      },
  ]
  </code></pre>
  <p>I then render some HTML for each assessment:</p>
  <pre><code>&lt;div ng-repeat=&quot;systemAssessment in client.systemAssessments&quot;&gt;
      &lt;span class=&quot;switch&quot;&gt;
          &lt;input ng-model=&quot;systemAssessment.paused&quot; name=&quot;{{systemAssessment.name}}&quot; ng-change=&quot;onPauseResumeAssessmentHandler(systemAssessment)&quot; type=&quot;checkbox&quot; toggle-btn on-type=&quot;success&quot;&gt;
      &lt;/span&gt;
  &lt;/div&gt;
  </code></pre>
  <p>And my ng-change function looks like this:</p>
  <pre><code>  $scope.onPauseResumeAssessmentHandler = function onPauseResumeAssessmentHandler(systemAssessment) {
      //const { id, paused } = systemAssessment;
      //const clientId = $scope.client.clientId;
      console.log(systemAssignedAssessment);
  
      try {
        throw new Error('ERROR');
        //AssessmentsService.pauseResumeAssessment(clientId ,id, !paused);
      } catch (error) {
        $scope.client.systemAssessments[0].paused = false;
        console.log($scope.client.systemAssessments);
      }
    };
  </code></pre>
  <p>Now since my input checkbox is binded to <code>pausedAssessment.paused</code>, if I check it, the paused property becomes true and the checkbox gets checked, however, I only want it to become checked if <code>AssessmentsService.pauseResumeAssessment(clientId ,id, !paused);</code> does not fail as it's a POST request.</p>
  <p>For example, if the checkbox was unchecked and I clicked it, I'd want it to check only if the POST request goes through and for it to either stay unchecked, or to uncheck itself if the POST request fails.</p>
  <p>As you can see in my code snippet, I tried using a try-catch block and then unchecking the first checkbox if the POST request throws an error, however, when I log the <code>$scope.client.systemAssessments</code> in the catch, it shows that the first assessment's paused property is still set to true, even though you can see that I set it to false.</p>
  <p>I assume this happens because of a weird interaction between ng-model and ng-change ( maybe ng-model overwrites the changes I do in ng-change )</p>