在AngularJS中添加指令我正試圖構建一個指令來處理添加更多指令對其聲明的元素。例如,我想構建一個指令,負責添加datepicker, datepicker-language和ng-required="true".如果我試圖添加這些屬性,然后使用$compile顯然,我生成了一個無限循環,因此我正在檢查是否已經添加了所需的屬性: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);
}
};
});當然,如果我不$compile元素,屬性將被設置,但指令不會被引導。這個方法是正確的還是我做錯了?有沒有更好的方法來實現同樣的行為?烏普特*鑒于以下事實:$compile實現這一目標的唯一方法是,是否有一種方法可以跳過第一次編譯傳遞(元素可能包含幾個子元素)?也許通過設置terminal:true?更新2:我試著把這個指令變成select元素,如預期的那樣,編譯運行兩次,這意味著預期的數量是預期的兩倍。optionS.
在AngularJS中添加指令
交互式愛情
2019-07-03 14:04:39