猿问

在AngularJS中添加指令

在AngularJS中添加指令

我正试图构建一个指令来处理添加更多指令对其声明的元素。例如,我想构建一个指令,负责添加datepickerdatepicker-languageng-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.


交互式爱情
浏览 428回答 3
3回答
随时随地看视频慕课网APP
我要回答