Question: When I'm updating scope value directly, it updates in view just fine, but when this value is updated from AJAX callback it doesn't update. Here is simplified example - <http://jsfiddle.net/hS8Bs/1/>

How can I get around it?

**Update:** I noticed that clicking second time on the link does update the value, but it's not what I'm looking for.

Answer: 
This is an addon to the selected answer, I found that Angular JS still called "Error: $digest already in progress" when I implemented the $apply() function.

So I found [Will Vincent's](https://stackoverflow.com/users/1972101/will-vincent) code on this post:
[AngularJS : What's the Angular way to interact with a form?](https://stackoverflow.com/questions/14448386/angularjs-whats-the-angular-way-to-interact-with-a-form)
, it checks for $digest already in progress and only calls $apply() when safe to:

```
$scope.safeApply = function(fn) {
    var phase = this.$root.$$phase;
    if(phase == '$apply' || phase == '$digest') {
        if(fn && (typeof(fn) === 'function')) {
          fn();
        }
    } else {
       this.$apply(fn);
    }
};

```

so it would be something like:

`$scope.safeApply(function() { ...code here... });`
Here is your [missing tutorial](http://docs.angularjs.org/tutorial/step_05) you need to use $http parameter of controller in order to get field updated.
Check your updated example <http://jsfiddle.net/hS8Bs/2/>