我有一个指令:
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,..和其他角度属性或指令时出现同样的问题。
答案 0 :(得分:0)
不要在控制器内手动执行DOM操作等;角度不是为了解决这个问题而设计的。相反,请使用$compile
。
像这样的东西:(控制器代码)
function($scope, $compile) {
var myElement = $compile('<div toggle-text></div>')($scope);
// do stuff with it
}