Javascript Angularjs动态设置属性

Javascript Angularjs动态设置属性,javascript,angularjs,attributes,setattribute,Javascript,Angularjs,Attributes,Setattribute,我正在尝试在angular js中动态地向控制器中的div添加属性 var table = document.getElementById("div_id").setAttribute("ng-click", "function_name()"); $scope.$apply(); 一切看起来都很好,在调试器中,我看到添加了该属性,但它没有执行我的函数。您是否知道如何向现有div添加属性以及如何使其工作?您需要重新编译div var el = angular.element("div_id

我正在尝试在angular js中动态地向控制器中的div添加属性

 var table = document.getElementById("div_id").setAttribute("ng-click", "function_name()");
 $scope.$apply();

一切看起来都很好,在调试器中,我看到添加了该属性,但它没有执行我的函数。您是否知道如何向现有div添加属性以及如何使其工作?

您需要重新编译div

var el = angular.element("div_id");
$scope = el.scope();
$injector = el.injector();
$injector.invoke(function($compile){
   $compile(el)($scope)
})

按id获取元素并设置新属性和值

 var el =angular.element('#divId');
 el.attr('attr-name', 'attr-value');

要动态设置属性,请使用

var myEl = angular.element(document.querySelector('#divID'));
myEl.attr('myattr',"attr val");
要获取属性值,请使用

var myEl = angular.element( document.querySelector('#divID'));
alert(myEl.attr('myattr'));
要删除属性,请使用

var myEl = angular.element( document.querySelector( '#divID' ) );
myEl.removeAttr('myattr');

Angular2提供了
[attr.

我认为你不应该调用该函数,比如说只调用
函数\u name
。你不能在你的click函数中添加一个布尔值,默认为false,然后在你想“添加”的地方设置为true吗这个函数?这不是DOM操作吗?也就是说,你不应该用Angular做什么?不,DOM操作是你在需要时应该做的。唯一的要求是将DOM操作保持在控制器之外,并保持在自定义指令中。他说:“在Angular js中动态地将属性添加到控制器中的div”。不是angular2,也不是html。与op的问题完全不同的主题这将仅在调试版本中有效。在具有此$compileProvider.debugInfoEnabled(false)的生产版本中,$scope将不会像这样可用。谢谢!您是一位救世主!
<div id="divID" [attr.role]="roleVal">
  This text color can be changed
</div>
  addAttr() {
    this.roleVal = 'admin';
  }

  removeAttr() {
    this.roleVal = '';
  }

  checkAttr() {
    alert(this.roleVal);
  }