Ich habe eine Formularanweisung, die ein angegebenes callback
Attribut mit einem isolierten Bereich verwendet:
scope: { callback: '&' }
Es befindet sich in einem, ng-repeat
sodass der Ausdruck, den ich übergebe, das id
des Objekts als Argument für die Rückruffunktion enthält:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Wenn ich mit der Direktive fertig bin, ruft sie $scope.callback()
von ihrer Controller-Funktion auf. In den meisten Fällen ist dies in Ordnung und es ist alles, was ich tun möchte, aber manchmal möchte ich ein weiteres Argument aus dem Inneren heraus hinzufügen directive
.
Gibt es einen Winkelausdruck, der dies zulässt: $scope.callback(arg2)
was dazu führt, callback
dass mit aufgerufen wird arguments = [item.id, arg2]
?
Wenn nicht, wie geht das am besten?
Ich habe festgestellt, dass dies funktioniert:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
Mit
scope { callback: '=', callbackArg: '=' }
und die Richtlinie aufrufen
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Aber ich denke nicht, dass es besonders ordentlich ist und es beinhaltet, zusätzliches Zeug in den isolierten Bereich zu stellen.
Gibt es einen besseren Weg?
Plunker Spielplatz hier (Konsole geöffnet haben).
ng
API. Beispielsweise ng-click="someFunction()"
handelt es sich um einen Ausdruck, der zur Ausführung einer Funktion ausgewertet wird.
$scope.callback
wird durch das callback="someFunction"
Attribut und die scope: { callback: '=' }
Eigenschaft des Direktivendefinitionsobjekts festgelegt. $scope.callback
ist eine Funktion, die zu einem späteren Zeitpunkt aufgerufen werden soll. Der eigentliche Attribut - Wert ist offensichtlich ein String - , die mit HTML immer der Fall ist.