我有一個指令,用一些常規的HTML替換我的自定義標籤。 我想刪除一些屬性。例如,給定的語法AngularJS刪除屬性
<ui mybutton width="30"></mybutton>
我的指令將其轉換爲
<div width="30" class="btn">bla bla </div>
我想刪除"width=30"
並添加style="width:{{old width value here}}"
我一直在編譯和鏈接功能試驗。我應該在編譯還是鏈接功能中做到這一點?
我以爲我不得不在編譯函數中這樣做,因爲我想在模板中進行修改。
看到它住在http://jsfiddle.net/WptGC/2/警告:您的瀏覽器可能會掛起! 實時安全地看到它http://jsfiddle.net/WptGC/3/讓一切崩潰的代碼都被評論了。
.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);
}
}
}
})
我只是得到一個奇怪的循環(即執行console.log顯示了幾千次)
的原因,你都拿到了環是你調用$編譯相同的元素,因此編譯函數被再次呼籲。 – kvetis 2015-01-28 13:31:02