non sono in grado di chiamare una funzione di controllo dall'interno di un custom-modello con ui-typeahead:Access Controller portata da Bootstrap-UI modello typeahead
<input typeahead="val for val in autoComplete($viewValue)"
typeahead-template-url="searchAutocompleteTpl.html"
ng-model="query"/>
<script type="text/ng-template" id="searchAutocompleteTpl.html">
<span ng-repeat="eqp in match.model.equipment"/>
<a href="" ng-click="showItem(eqp.model)">
found in: {{eqp.model}}
</a>
</script>
Il problema è che la portata del controller sembra essere assente in il modello:
showItem(eqp.model)
non viene mai chiamato. Ho anche provato con:
$parent.showItem(eqp.model)
inutilmente.
Come è possibile chiamare una funzione/un valore sull'ambito del controller, quindi?
grazie, ma sai perché? e dove possiamo vedere chiaramente la struttura dello scopo. – Awakening
Ci sono voluti 4 $ per me per ottenere l'ambito originale. – ddalex
Dipende come e dove lo si utilizza. typeahead introduce chiaramente uno scope isolato da qualche parte, il che significa che non puoi ereditare prototipicamente dai tuoi scopi genitore. Questo è il motivo per cui devi usare $ parent, che è popolato da angolare anche in ambiti isolati. Se stai usando typeahead nella tua stessa direttiva che definisce anche un ambito isolato, devi passare alla catena $ parent 4 volte per raggiungere l'ambito di base. Ovviamente a questo punto potresti voler riconsiderare il tuo codice. Il punto di un ambito isolato è che può essere riutilizzato perché non dipende da un genitore. –