在事件时动态地将指令附加到当前指令的子节点

时间:2014-11-13 17:39:27

标签: angularjs

我的指令“addOnce”需要检查它是否具有“restrict”属性,如果是,则将某些其他指令附加到输入框中,该输入框是其中一个子子项。

我已经能够布局框架来完成这项工作。但是我仍然无法动态地将其他指令附加到输入框。

Plnkr:http://plnkr.co/edit/jYiTtTQ0uPuH40zcMcer

app.directive('addOnce', ['$timeout', function($timeout){
    return {

    restrict: 'E',
    link: function(scope, el, attrs){

      if(attrs.restrict){
        var input = el.find('input');

        $timeout(function(){
          input.val('testing');  
        }, 50)


        // now attach directive restrict-symbols to the input box
        // as a result the html would look like
         //<input type="text" class="aClass" ng-model="aModel" restrict-symbols>
      }


    }
  };

}]);

任何线索都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

嵌套指令的必要部分是:

input.attr('restrict-symbols', '');
$compiled = $compile(input)(scope);

请查看修改后的plunkr以获取完整示例:http://plnkr.co/edit/HCTGj1ivp48cUXBXpn1Q?p=preview

我所做的只是将所需属性添加到输入字段,然后编译元素,以便执行嵌套指令。第二个指令的代码不是很复杂,但足以证明它的工作原理