In una direttiva AngularJS l'ambito consente di accedere ai dati negli attributi dell'elemento a cui viene applicata la direttiva.
Questo è illustrato al meglio con un esempio:
<div my-customer name="Customer XYZ"></div>
e la definizione della direttiva:
angular.module('myModule', [])
.directive('myCustomer', function() {
return {
restrict: 'E',
scope: {
customerName: '@name'
},
controllerAs: 'vm',
bindToController: true,
controller: ['$http', function($http) {
var vm = this;
vm.doStuff = function(pane) {
console.log(vm.customerName);
};
}],
link: function(scope, element, attrs) {
console.log(scope.customerName);
}
};
});
Quando scopeviene utilizzata la proprietà, la direttiva si trova nella cosiddetta modalità "ambito isolato", il che significa che non può accedere direttamente all'ambito del controller principale.
In termini molto semplici, il significato dei simboli vincolanti è:
someObject: '=' (associazione dati bidirezionale)
someString: '@'(passato direttamente o tramite interpolazione con notazione di parentesi graffe doppie {{}})
someExpression: '&'(ad es. hideDialog())
Questa informazione è presente nella pagina di documentazione della direttiva AngularJS , sebbene in qualche modo diffusa in tutta la pagina.
Il simbolo >non fa parte della sintassi.
Tuttavia, <esiste come parte delle associazioni dei componenti AngularJS e significa associazione a una via.
@??