从元素动态添加和删除指令

时间:2015-04-14 09:14:57

标签: angularjs angularjs-directive

我有一个选择和一个输入文本元素。根据所选的选项,我需要在输入文本元素中添加或删除指令。

是否可以在某些定义的函数中执行此操作,例如在select元素中的ng-change,如下所示:  ng-change = changeInputValidation()

如果有可能怎么做?

1 个答案:

答案 0 :(得分: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