Angular指令和属性在Controller中创建和设置时不起作用

时间:2015-03-04 03:10:43

标签: javascript angularjs angularjs-directive angularjs-scope

我有一个指令:

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);

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

1 个答案:

答案 0 :(得分:0)

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

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

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