在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.
添加回答
举报
0/150
提交
取消