mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
47 lines
2.1 KiB
Text
47 lines
2.1 KiB
Text
@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}
|