使用angularjs指令禁用所有子元素

时间:2014-10-06 05:17:44

标签: angularjs angularjs-directive

我创建了一个禁用所有选定子元素的指令,如下所示:

app.directive('noeDisable', function () {
        var linkFunction = function (scope, element, attributes) {
            scope.text = attributes["=noeDisable"];
            if (scope.text == 'true') {
                $(element).find('input,button,a').attr("disabled", true);
            }
        };
        return {
            link: linkFunction

        };
    });

它适用于此示例:<div noe-disable="true"> ... </div>。但问题是稍后加载了一些子元素,例如在ajax调用之后或者我在父元素中有另一个angularjs指令将一些子元素添加到其父元素时,所以它们不会被禁用! 我该如何处理这个问题?

2 个答案:

答案 0 :(得分:6)

你可以使用fieldset。

在fieldset中包装所有字段并使用ng-disabled,如:

<fieldset ng-disabled="shouldDisabled"> 
         ... inputs ...
</fieldset>

它会自动禁用字段集内的所有输入。

答案 1 :(得分:2)

有一个备用(几个关闭)分钟!

Here is the plunk展示了mutationObserver。

关键在于这一行:

observer.observe(element[0], config);

女巫订阅该元素的所有dom更新。 我放弃了对jQuery的依赖,而我却在那里;)