@workInProgress @ngdoc overview @name Developer Guide: Scopes: Updating Scope Properties @description You can update a scope by calling its {@link api/angular.scope.$eval $eval()} method, but usually you do not have to do this explicitly. In most cases, angular intercepts all external events (such as user interactions, XHRs, and timers) and calls the `$eval()` method on the scope object for you at the right time. The only time you might need to call `$eval()` explicitly is when you create your own custom widget or service. The reason it is unnecessary to call `$eval()` from within your controller functions when you use built-in angular widgets and services is because a change in the data model triggers a call to the `$eval()` method on the scope object where the data model changed. When a user inputs data, angularized widgets copy the data to the appropriate scope and then call the `$eval()` method on the root scope to update the view. It works this way because scopes are inherited, and a child scope `$eval()` overrides its parent's `$eval()` method. Updating the whole page requires a call to `$eval()` on the root scope as `$root.$eval()`. Similarly, when a request to fetch data from a server is made and the response comes back, the data is written into the model and then `$eval()` is called to push updates through to the view and any other dependents. A widget that creates scopes (such as {@link api/angular.widget.@ng:repeat ng:repeat}) is responsible for forwarding `$eval()` calls from the parent to those child scopes. That way, calling `$eval()` on the root scope will update the whole page. This creates a spreadsheet-like behavior for your app; the bound views update immediately as the user enters data. ## Related Documents * {@link dev_guide.scopes Angular Scope Objects} * {@link dev_guide.scopes.understanding_scopes Understanding Angular Scope Objects} * {@link dev_guide.scopes.working_scopes Working With Angular Scopes} * {@link dev_guide.scopes.controlling_scopes Applying Controllers to Scopes} ## Related API * {@link api/angular.scope Angular Scope API}