Mam dyrektywę, która zastępuje mój niestandardowy tag zwykłym HTML. Jest kilka atrybutów, które chciałbym usunąć. Na przykład, ze względu na składnięAngularJS usuń atrybuty
<ui mybutton width="30"></mybutton>
moja dyrektywa przekształca go w
<div width="30" class="btn">bla bla </div>
Chcę usunąć i dodać, że "width=30"
style="width:{{old width value here}}"
byłem eksperymentuje z funkcją kompilacji i łącza. Czy powinienem to zrobić w kompilacji lub w funkcji łącza?
Myślałem, że muszę to zrobić w funkcji kompilacji, ponieważ chcę dokonać modyfikacji w szablonie.
Zobacz na żywo w http://jsfiddle.net/WptGC/2/OSTRZEŻENIE: przeglądarka może się zawiesić! Zobacz na żywo i bezpiecznie http://jsfiddle.net/WptGC/3/ kod, który powoduje, że wszystko jest skomentowane.
.directive('mybutton', function($compile) {
return {
restrict: 'A',
//transclude: true,
template: '<div class="this is my subscreen div" style="width:{{width}}"></div>',
replace: false,
/*scope: {
width: '@',
height: '@',
x: '@',
y: '@'
},*/
compile: function($tElement, $tAttrs) {
console.log("subscreen template attrs:");
console.log($tAttrs);
var el = $tElement[0];
//el.getAttribute('width');
var stylewidth = el.getAttribute('width');
el.removeAttribute('width');
return function(scope) {
$compile(el)(scope);
}
}
}
})
Ja tylko coraz dziwną pętlę (tj console.log pojawia się kilka tysięcy razy)
powodem były coraz pętla, że zadzwonisz $ skompilować tego samego elementu i tak funkcja kompilacji jest wywoływana ponownie. – kvetis