Non sono sicuro che ciò sia effettivamente possibile, ma essenzialmente sto cercando di annullare l'ambito "&" in AngularJS. Ecco un Plunkr da dimostrare.L'ambito isolato della direttiva di accesso dall'interno del contenuto escluso
Fondamentalmente, ho impostato una direttiva personalizzata che fornisce alcuni HTML riutilizzabili. Utilizza ng-transclude
per consentire il rendering di alcuni contenuti esterni al suo interno. Tuttavia, ho trovato una situazione in cui vorrei accedere a una funzione che è stata impostata sull'isolamento dell'isolamento per la direttiva, all'interno della sezione del codice transclusa.
Quindi, in sostanza ho qualcosa che assomiglia:
<div ng-controller="MainController">
<!-- The directive -->
<div some-custom-directive>
<!-- Button 1 that invokes a method within the controller scope -->
<button id="button1" ng-click="invoke1()">Invoke from Controller</button>
<!-- Button 2 that invokes a method on the isolate scope for the custom directive -->
<button id="button2" ng-click="invoke2()">Invoke from Isolate Scope</button>
</div>
</div>
Qualcuno sa se questo è davvero possibile?
Aggiornamento
Come per la risposta di @ Mark Rajcok, il $$prevSibling
trovato sul $scope
può essere utilizzato per accedere al campo di applicazione isolare della direttiva, dal all'interno del contenuto transclusa. Tuttavia, ho aggiornato il suddetto Plunkr per tentare ciò da una direttiva ng-repeat
, che non funziona. Suppongo che gli oggetti all'interno di quella ripetizione non ereditino l'ambito.
Cheers, che ha funzionato. Tuttavia, ho scoperto che non funziona all'interno di un 'ng-repeat' (presumo perché ogni elemento non eredita' $ scope' dal controller.È comunque che ogni elemento può accedere a '$$ prevSibling '? Ho aggiornato il Plunkr sopra per dare un esempio –
@ SamuelSlade, vedere la mia risposta aggiornata (con foto) –
Brillante, funziona come un incantesimo! Grazie per il diagramma, molto informativo –