ho intenzione di rispondere alla domanda specifica qui, sì, ho capito questo non è il modo "angolare" di fare le cose. Se vuoi fare le cose nel modo "corretto", allora non farlo, usa una direttiva. Lì, a parte le dichiarazioni di rinuncia, ecco come farlo:
In sostanza, ciò che si vuole fare è dare all'elemento DOM un ID basato sull'indice $ o un valore univoco nel proprio oggetto ng-repeat. Qui, userò solo $ index.
<div ng-repeat="friend in friends" id="friend_{{$index}}" ng-bind-html="doSomethingBadToTheDom('friend_' + $index)">
{{friend.title}}
</div>
Poi, dentro il controller, basta interrogare il DOM per l'elemento con quel ID:
$scope.doSomethingBadToTheDom = function(ele_id) {
var element = document.getElementById(ele_id);
element.innerHTML = "I'm abusing angular";
}
Stiamo usando ng-bind-html qui perché l'elemento DOM esisterà quando il controller la funzione viene eseguita, nel caso di qualcosa come ng-init, non lo farà.
Ancora, questo va contro tutto ciò che è angolare, quindi se stai cercando di seguire le migliori pratiche angolari, non farlo.
Mi sono imbattuto in situazioni in cui la tecnica è utile, soprattutto quando si tratta di librerie non angolari, o in quei momenti in cui il "modo angolare" è più un problema che non ne vale la pena.
fonte
2015-07-13 18:37:27
È necessario utilizzare una direttiva per farlo –
Si prega di fare qualche esempio per fare questo, grazie mille – Zzarcon