2015-04-14 2 views
1

У меня есть один элемент выбора и один элемент ввода. В зависимости от выбранного параметра мне нужно добавить или удалить директивы из входного текстового элемента.Динамически добавлять и удалять директивы из элемента

Возможно ли это сделать в определенной функции, например, при изменении ng в элементе выбора, например: ng-change = changeInputValidation()?

И если возможно, как это сделать?

+0

вы можете 'ng-if' добавить и удалить элемент директивы из DOM –

ответ

2

Один из способов сделать это что-то вроде этого внутри новой директивы:

HTML:

<div ng-app="app"> 
    <div id="abc" blue-text>Abc</div> 
    <br/> 
    <button remove-blue-text="abc">Remove Directive</button> 
</div> 

JS:

var app = angular.module('app', []); 

app.directive('blueText', function() { 
    return { 
     link: function (scope, elem, attrs) { 
      elem.css('background', 'blue'); 
     } 
    }; 
}); 

app.directive('removeBlueText', function ($compile) { 
    return { 
     scope: { 
      idToRemove: "@removeBlueText" 
     }, 
     link: function (scope, elem, attrs) { 
      elem.on('click', function() { 
       var elem = angular.element(document.getElementById(scope.idToRemove)); 
       var newHtml = '<div id="abc">Abc</div>'; 
       $compile(newHtml)(scope, function (el) { 
        elem.replaceWith(el); 
       }); 
      }); 
     } 
    }; 
}); 

JSFIDDLE.

+0

Поскольку вы удаляете директивный фургон, вы также добавляете то же самое ..? – Ved

+0

Я начинаю AngularJS, и это кажется мне непонятным. Мне нужно добавить или удалить определенные директивы из некоторого элемента ввода при выборе опции выбора. Итак, КОГДА ВЫБРАТЬ ВАРИАНТ ИЗМЕНЕН, как реализовать это и интегрировать одну часть кода, который вы написали? – bambi

+0

@Ved - я удалил директиву и добавил тот же элемент без директивы. Вы можете проверить скрипку и посмотреть. –