2016-01-26 8 views
6

AngularJS Developer Guide on Expressions erwähnt etwas $locals genannt:

Es ist möglich, das Kontextobjekt mit der Kennung dieses und die Einheimischen Objekt zuzugreifen, die Kennung $ Einheimischen verwenden.

Ich verstehe nicht, was "Locals Objekt" ist, und ich kann keine weiteren Informationen über $ Locals in Docs finden. Was ist seine Aufgabe? Wie operierst du darauf?

Antwort

5

Das entsprechende Commit, wo Sie weitere Informationen darüber finden können, ist this one, die auch auf das Problem verweist, um $ localhosts einzuführen.

Kurz gesagt, wenn ein Parameter mit '&' an einen Parameter übergeben wird, kann die Direktive Informationen an den Aufrufer weiterleiten, damit sie bei Bedarf Code ausführen kann (z. B. bei Verwendung von ng-click="doSomething()") lokale Werte verwenden.

Zum Beispiel können Sie ng-click="doSomething($event)" verwenden, wobei $ event kein Attribut des Bereichs ist, sondern ein Wert, der von der ng-click-Direktive übergeben wird.

Anstatt auf jeden "lokalen" Wert zuzugreifen, der von der Direktive einzeln übergeben wurde, können Sie alle gleichzeitig auf $locals zugreifen.

Weitere Informationen darüber, wie lokale Werte aus der Richtlinie zu übergeben sind im documentation on directives verfügbar:

& oder & attr - bietet eine Möglichkeit, einen Ausdruck im Kontext des übergeordneten Bereichs auszuführen. Wenn kein Attributname angegeben wird, wird angenommen, dass der Attributname mit dem lokalen Namen identisch ist. Gegebene und Widgetdefinition des Bereichs: {localFn: '& myAttr'}, dann isoliert die Bereichseigenschaft localFn auf einen Funktionswrapper für den Ausdruck count = count + value. Häufig ist es wünschenswert, Daten aus dem isolierten Gültigkeitsbereich über einen Ausdruck an den übergeordneten Gültigkeitsbereich zu übergeben, indem Sie eine Zuordnung lokaler Variablennamen und Werte in den Ausdruckswrapper fn übergeben. Zum Beispiel, wenn der Ausdruck increment(amount) dann können wir den Betrag Wert angeben, indem Sie die localFn als localFn Aufruf ({Menge: 22})

(Hervorhebung von mir)

In der obigen axample, die gesamte Objekt {amount: 22} durch die Richtlinie verabschiedet ist verfügbar $ Einheimischen verwenden und somit increment($locals.amount)

2

See this test beschreibt Funktionen, die über kamen aus Issue 13247 nutzen könnten.

Sehen Sie sich auch dieses Beispiel einer Richtlinie mit einem Rückruf:

// JS 
angular.module('app', []) 
.controller('AppCtrl', function($scope) { 
    $scope.log = function(locals) { 
    console.log(locals); 
    }; 
}) 
.component('fooBar', { 
    template: "", 
    bindings: { cb: '&'}, 
    controller: function() { 
    this.a = 1; 
    this.b = 2; 
    this.c = 3; 
    this.cb(this); 
    } 
}); 

// HTML 
<body ng-app="app" ng-controller="AppCtrl"> 
    <foo-bar cb="log($locals)">foobar</foo-bar> 
</body> 
+0

Was also melden Sie sich das? – zakdances

+0

Es protokolliert, was der Controller zurückgibt. '{a: 1, b: 2, c: 3, cb: Funktion (lokale) {...}}' –

Verwandte Themen