Ho una direttiva di forma che utilizza un callback
attributo specificato con un ambito isolato:
scope: { callback: '&' }
Si trova all'interno di un ng-repeat
modo quindi l'espressione che passo include id
l'oggetto dell'oggetto come argomento della funzione di callback:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Quando ho finito con la direttiva, chiama $scope.callback()
dalla sua funzione controller. Nella maggior parte dei casi questo va bene, ed è tutto ciò che voglio fare, ma a volte vorrei aggiungere un altro argomento all'interno di directive
se stesso.
Esiste un'espressione angolare che consentirebbe questo $scope.callback(arg2)
:, risultando callback
essere chiamato con arguments = [item.id, arg2]
?
In caso contrario, qual è il modo migliore per farlo?
Ho scoperto che funziona:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
Con
scope { callback: '=', callbackArg: '=' }
e la direttiva che chiama
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Ma non penso che sia particolarmente pulito e implichi l'inserimento di materiale extra nell'ambito dell'isolato.
C'è un modo migliore?
Parco giochi Plunker qui (avere la console aperta).
ng
API, ad esempio ng-click="someFunction()"
è un'espressione che valuta l'esecuzione di una funzione.
$scope.callback
è impostato dall'attributo callback="someFunction"
e dalla scope: { callback: '=' }
proprietà dell'oggetto definizione direttiva. $scope.callback
è una funzione da chiamare in un secondo momento. Il valore dell'attributo effettivo è ovviamente una stringa, come sempre nel caso dell'HTML.