Sto dando una prima prova alle direttive personalizzate AngularJS.AngularJS - Accesso all'ambito isolato nella funzione di collegamento della direttiva
Sto riscontrando problemi nell'utilizzo (o nella comprensione ...) dell'ambito isolato nella funzione di collegamento della direttiva.
Ecco il codice di questa parte della mia app:
view.html
...
<raw-data id="request-data" title="XML of the request" data="request">See the request</raw-data>
...
request
è una variabile pubblicato nel campo di applicazione della viewCtrl che contiene la stringa di XML di una richiesta.
rawData.js
directives.directive('rawData', function() {
return {
restrict : 'E',
templateUrl : 'partials/directives/raw-data.html',
replace : true,
transclude : true,
scope : {
id : '@',
title : '@',
data : '='
},
link : function($scope, $elem, $attr) {
console.log($scope.data); //the data is correclty printed
console.log($scope.id); //undefined
}
};
});
prime data.html
<div>
<!-- Button to trigger modal -->
<a href="#{{id}}Modal" role="button" class="btn" data-toggle="modal" ng-transclude></a>
<!-- Modal -->
<div id="{{id}}Modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="{{id}}Modal" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">{{ title }}</h3>
</div>
<div class="modal-body">
<textarea class="input-block-level" rows="10">{{ data }}</textarea>
</div>
<div class="modal-footer">
<!-- <button class="btn" ng-click="toggleTagText('')">{{'cacher'}} l'image</button> -->
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Fermer</button>
</div>
</div>
</div>
Non capisco il motivo per cui l'ID viene correclty mostrato quando il pop modali, ma quando provo a console.log()
esso, il suo valore non è definito.
Forse ho sbagliato con il valore dello scope isolato (=
e @
).
Grazie per la lettura. :)
Si tratta di congetture totale, ma è "id" speciale in qualche modo, perché "id" una parte fondamentale del DOM e Angular non verranno mappati correttamente nella tua direttiva per questo motivo? Hai provato a rinominare quell'attributo per vedere se aiuta a funzionare meglio? – blaster
Aiuta molto se riesci a mettere su un violino (jsfiddle.com/plnkr.co). –
@blaster: lo stesso sta accadendo con il "titolo" e non è un elemento di base del DOM. :) – pdegand59