Los últimos tutoriales de desarrollo web
 

AngularJS Alcance


El ámbito de aplicación es la parte de unión entre el HTML (ver) y el código JavaScript (controlador).

El ámbito de aplicación es un objeto con las propiedades y métodos disponibles.

El ámbito de aplicación está disponible tanto para la vista y el controlador.


Cómo usar el Alcance?

Cuando haces un controlador en AngularJS, se pasa el $scope objeto como un argumento:

Ejemplo

Propiedades realizados en el controlador, puede hacer referencia a la vista:

<div ng-app="myApp" ng-controller="myCtrl">

<h1>{{carname}}</h1>

</div>

<script>
var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.carname = "Volvo";
});
</script>
Inténtalo tú mismo "

Al añadir propiedades a la $scope objeto en el controlador, la vista (HTML) tiene acceso a estas propiedades.

En la vista, no se utiliza el prefijo $scope , que sólo se refiere a un propertyname, como {{carname}} .


Comprender el alcance

Si consideramos una aplicación AngularJS consistir en:

  • Ver, que es el HTML.
  • Modelo, que son los datos disponibles para la vista actual.
  • Controller, que es la función de JavaScript que hace / cambios / elimina / controla los datos.

A continuación, el ámbito de aplicación es el Modelo.

El ámbito de aplicación es un objeto JavaScript con propiedades y métodos, que están disponibles tanto para la vista y el controlador.

Ejemplo

Si se realizan cambios en la vista, el modelo y el controlador se actualizarán:

<div ng-app="myApp" ng-controller="myCtrl">

<input ng-model="name">

<h1>My name is {{name}}</h1>

</div>

<script>
var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.name = "John Doe";
});
</script>
Inténtalo tú mismo "

Conozca a su Alcance

Es importante saber qué alcance se trata de, en cualquier momento.

En los dos ejemplos anteriores sólo hay una ámbito de aplicación, por lo que conocer su alcance no es un problema, pero para aplicaciones más grandes hay secciones adicionales en el DOM de HTML que sólo pueden acceder a ciertos ámbitos.

Ejemplo

Cuando se trata de la ng-repeat Directiva, cada repetición tiene acceso al objeto de repetición actual:

<div ng-app="myApp" ng-controller="myCtrl">

<ul>
    <li ng-repeat="x in names">{{x}}</li>
</ul>

</div>

<script>
var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.names = ["Emil", "Tobias", "Linus"];
});
</script>
Inténtalo tú mismo "

Cada <li> elemento tiene acceso al objeto de repetición actual, en este caso una cadena, que se denomina mediante el uso de x .


Alcance de la raíz

Todas las aplicaciones tienen un $rootScope que es el ámbito creado en el elemento HTML que contiene el ng-app Directiva.

El rootScope está disponible en toda la aplicación.

Si una variable tiene el mismo nombre tanto en el ámbito actual y en el rootScope, la aplicación usar el uno en el ámbito actual.

Ejemplo

Una variable llamada "color" existe en el ámbito de aplicación tanto del controlador y en el rootScope:

<body ng-app="myApp">

<p>The rootScope's favorite color:</p>
<h1>{{color}}</h1>

<div ng-controller="myCtrl">
    <p>The scope of the controller's favorite color:</p>
    <h1>{{color}}</h1>
</div>

<p>The rootScope's favorite color is still:</p>
<h1>{{color}}</h1>

<script>
var app = angular.module('myApp', []);
app.run(function($rootScope) {
    $rootScope.color = 'blue';
});
app.controller('myCtrl', function($scope) {
    $scope.color = "red";
});
</script>
</body>
Inténtalo tú mismo "