Ciao Ho questa direttiva tasto "confermabile", che sto lavorando su,angular.js: come passare ngclick dalla dom originale alla dom della direttiva?
il codice HTML che attiverà la direttiva 'confirmable'
<span confirmable ng-click='users.splice($index,1)'></span>
direttiva: (CoffeeScript)
angular.module('buttons',[])
.directive 'confirmable',() ->
template: """
<button class='btn btn-mini btn-danger'>
Destroy
</button>
"""
replace: yes
Così il risultato finale mi piacerebbe vedere generata con questa direttiva è
<button class='btn btn-mini btn-danger' ng-click='users.splice($index,1)'>
Destroy
</button>
Finora ho preso a lavorare con una funzione di collegamento all'interno della direttiva
angular.module('buttons',[])
.directive 'confirmable',() ->
template: """
<button class='btn btn-mini btn-danger'>
Destroy
</button>
"""
replace: yes
link: (scope, el, attrs) -> <---------- linking function
$(el).attr 'ng-click', attrs.ngClick
Ma ho passato attraverso la documentazione direttiva di nuovo, e hanno trovato la proprietà ambito con i =, @, & operatori ma io sono davvero insicuro se sono ciò di cui ho bisogno. Poi c'è questa proprietà di transizione che ho ancora bisogno di capire, ma al momento non sembra essere utile neanche. Quindi, mentre la mia funzione di collegamento fa il trucco per ora, ma ho pensato che dovrei chiedere di vedere se l'angolare fornisce una soluzione più elegante.
Grazie!
posso vedere che è molto utile, è quello di passare funzioni intorno come questo. Solo curioso, però, puoi passare argomenti a foo(), quindi? e come verrà trasferito alla direttiva? –
Sì, è possibile passare argomenti. Le cose generalmente "scendono" dalla direttiva al genitore, non viceversa. Se hai richiesto qualcosa da fare sulla direttiva prima di chiamare il riferimento alla funzione genitore, allora dovresti semplicemente racchiudere quella chiamata in un'altra funzione di ambito nella dichiarazione del controllore della direttiva. –
Hmm. Non è consigliabile riutilizzare 'ng-click' dal momento che è così comunemente noto? Funziona nel tuo esempio, ma se usi l'opzione 'replace: true' per la tua direttiva, si rompe. Non ho idea del perché. = [ – Langdon