2014-11-13 3 views
0

Моя директива «addOnce» требуется для проверки наличия атрибута «ограничивать», и если да, то присоедините некоторые другие директивы к полю ввода, которое является одним из его суб-дети.Динамическое присоединение директивы к дочернему объекту текущей директивы при событии

Мне удалось создать структуру, чтобы сделать это. Однако застрял в том, как я могу динамически присоединить другие директивы к ящику ввода.

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> 
     } 


    } 
    }; 

}]); 

будут оценены Любые подсказки.

ответ

0

Необходимая часть вложенных директив будет:

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

Посмотрите на модифицированном plunkr для полного примера: http://plnkr.co/edit/HCTGj1ivp48cUXBXpn1Q?p=preview

То, что я сделал, было просто добавить необходимый атрибут для входа поле, затем скомпилируйте элемент, чтобы вложенная директива выполнялась. Код второй директивы не очень сложный, но достаточно, чтобы продемонстрировать, что он работает

Смежные вопросы