我在另一个指令中有条件地使用指令时遇到问题, 所以,让我说我有一个指令' myGrid'在它的模板中我有这样的东西:
<table my-grid-resizable>...</table>
我只想在使用myGrid指令时才使用myGridResizable指令:
<my-grid resizable="true" />
但我不想在myGrid指令的模板内使用ng-if。
我试过了:
if (scope.resizable) {
angular.element(element).find('table').attr('my-grid-resizable', ''); }
但是它不起作用,属性被添加但是指令不起作用,重新编译指令也没有帮助。
感谢您帮助解决此问题
答案 0 :(得分:0)
您只是设置属性,但这并不意味着DOM会被它自己消化。您的DOM没有更新的原因是因为您没有更新任何模型或绑定。您只是修改DOM。
所以你必须手动编译你的元素,如
首先,在您的指令或控制器中注入$compile
(以适用者为准)
然后做:
if (scope.resizable) {
angular.element(element).find('table').attr('draco-grid-dynamic-table', '');
var html = angular.element(element).find('table').html();
var compiledHtml = $compile(html)(scope);
angular.element(element).find('table').html(compiledHtml);
}
然而,这种方式有效,但不是一种有角度的方式,而且非常气馁。
我不明白为什么你不想使用ng-if
结构。这是有条不紊的做事方式。