Please help me on, Come possiamo rendere AngularJS compilare il codice generato dalla direttiva?Come rendere AngularJS compilare il codice generato dalla direttiva?
È anche possibile trovare lo stesso codice qui, http://jsbin.com/obuqip/4/edit
HTML
<div ng-controller="myController">
{{names[0]}} {{names[1]}}
<br/> <hello-world my-username="names[0]"></hello-world>
<br/> <hello-world my-username="names[1]"></hello-world>
<br/><button ng-click="clicked()">Click Me</button>
</div>
Javascript
var components= angular.module('components', []);
components.controller("myController",
function ($scope) {
var counter = 1;
$scope.names = ["Number0","lorem","Epsum"];
$scope.clicked = function() {
$scope.names[0] = "Number" + counter++;
};
}
);
// **Here is the directive code**
components.directive('helloWorld', function() {
var directiveObj = {
link:function(scope, element, attrs) {
var strTemplate, strUserT = attrs.myUsername || "";
console.log(strUserT);
if(strUserT) {
strTemplate = "<DIV> Hello" + "{{" + strUserT +"}} </DIV>" ;
} else {
strTemplate = "<DIV>Sorry, No user to greet!</DIV>" ;
}
element.replaceWith(strTemplate);
},
restrict: 'E'
};
return directiveObj;
});
Questo è un eccellente codice! – SunnyShah
non sarebbe un "=" vincolante essere più adatto? http://jsfiddle.net/979mN/1/ –
@Liviu, dal momento che la direttiva non modifica il valore myUsername, l'associazione dati unidirezionale ('@') sembra più appropriata rispetto al collegamento bidirezionale ('='). Sebbene utilizzare '=' sia più semplice (non è necessario utilizzare {{}} nell'HTML, l'uso di '@' rende chiaro che la direttiva non ha bisogno di modificare il valore. –