角度指令和属性Don'在控制器内创建和设置时无法工作

Angular directive and attributes Don't work when created and set inside Controller

本文关键字:设置 创建 工作 控制器 属性 指令 Don      更新时间:2023-09-26

我有一个指令:

app.directive('toggleText', function () {
    return {
        restrict: 'A',
        link: function (scope, element,attr) {
            element.bind('click', function(evt) {
                alert('hello');
            });
        }
    };
})

当我把它添加到元素中时,它就起作用了。它会提醒"你好"。

然而,当我试图在我的控制器中创建一个元素并以这种方式添加指令时:

var myElement = document.createElement('div');
var attr = document.createAttribute('toggle-text');
myElement.setAttributeNode(attr);

我可以看到该指令被添加到调试器中的元素中,但它不起作用
尝试添加ng click、ng include、..时出现相同问题。。以及我的控制器中使用"setAttributeNode"的其他角度属性或指令。

不要在控制器内手动进行DOM操作等;angular并不是为了解决这个问题而设计的。相反,请使用$compile

类似这样的东西:(控制器代码)

function($scope, $compile) {
    var myElement = $compile('<div toggle-text></div>')($scope);
    // do stuff with it
}