在AngularJS中添加指令我正試圖構(gòu)建一個指令來處理添加更多指令對其聲明的元素。例如,我想構(gòu)建一個指令,負(fù)責(zé)添加datepicker, datepicker-language和ng-required="true".如果我試圖添加這些屬性,然后使用$compile顯然,我生成了一個無限循環(huán),因此我正在檢查是否已經(jīng)添加了所需的屬性:angular.module('app')
.directive('superDirective', function ($compile, $injector) {
return {
restrict: 'A',
replace: true,
link: function compile(scope, element, attrs) {
if (element.attr('datepicker')) { // check
return;
}
element.attr('datepicker', 'someValue');
element.attr('datepicker-language', 'en');
// some more
$compile(element)(scope);
}
};
});當(dāng)然,如果我不$compile元素,屬性將被設(shè)置,但指令不會被引導(dǎo)。這個方法是正確的還是我做錯了?有沒有更好的方法來實現(xiàn)同樣的行為?烏普特*鑒于以下事實:$compile實現(xiàn)這一目標(biāo)的唯一方法是,是否有一種方法可以跳過第一次編譯傳遞(元素可能包含幾個子元素)?也許通過設(shè)置terminal:true?更新2:我試著把這個指令變成select元素,如預(yù)期的那樣,編譯運行兩次,這意味著預(yù)期的數(shù)量是預(yù)期的兩倍。optionS.
在AngularJS中添加指令
交互式愛情
2019-07-03 14:04:39