Ho una direttiva di forma che utilizza un callbackattributo specificato con un ambito isolato:
scope: { callback: '&' }
Si trova all'interno di un ng-repeatmodo quindi l'espressione che passo include idl'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 directivese stesso.
Esiste un'espressione angolare che consentirebbe questo $scope.callback(arg2):, risultando callbackessere 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).
ngAPI, 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.