我创建了一个禁用所有选定子元素的指令,如下所示:
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指令将一些子元素添加到其父元素时,所以它们不会被禁用!
我该如何处理这个问题?
答案 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的依赖,而我却在那里;)