我需要有条件地将ng-disabled
应用于由控制器包含但在原始编译时不存在的元素。它稍后由AJAX回调创建,需要根据特定条件启用/禁用。我想它需要一个指令,但我该怎么做呢?
我需要使用ng-disabled
而没有其他解决方案,因为IE< 11很好地处理了它,它不支持指针事件。
真正的代码太复杂了,不能在这里引用,但让我重新解释一下这个问题。 一个jQuery lib做了类似的事情:
$.get(url, function(){
$('<a class="btn"/>').appendTo(myDiv)
});
myDiv
位于角度控制器内。编译/指令链接时不存在<a/>
元素。在附加后,我应该调用一些代码来测试并应用ng-disabled
条件。它应该是指令还是手表?
答案 0 :(得分:0)
您可以使用ngIf
创建一个指令(以便在ngIf
条件等于true
时创建它。您可以在响应返回后启用此条件)。然后在链接功能中你可以:
link: function( scope, element, attrs ){
element.removeAttr("name-of-the-directive");
element.attrs("ng-disabled", "{{myExpression}}");
$compile( element)(scope);
}
必须使用行element.removeAttr("name-of-the-directive");
来避免无限编译循环。
答案 1 :(得分:0)
当您手动将代码插入DOM时,首先需要compile it and link it to your scope。
如果您的用例允许,您可以尝试在模板中使用ng-bind-html,然后只需将加载的代码放入$scope
属性,而无需自己$compile
。< / p>