2014-09-10 3 views
15

Я пытаюсь динамически добавлять атрибут div в контроллер в угловых js.Angularjs динамически устанавливает атрибут

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

Все выглядит хорошо, в отладчике я вижу, что этот атрибут был добавлен, но он не выполняет мою функцию. Есть ли у вас идеи, как добавлять атрибуты к существующему div и как заставить его работать?

+0

Я думаю, вы не должны вызывать эту функцию только сказать 'function_name'. – Mritunjay

+0

Не можете ли вы добавить условие в свою функцию щелчка с логическим значением, которое по умолчанию является ложным, а затем установить его true, где вы хотите «добавить» эту функцию? –

ответ

14

Вы должны перекомпилировать ваш ДИВ

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

http://jsfiddle.net/r2vb1ahy/

10

Получить элемент по идентификатору и установить новый атрибут и значение

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

- это не манипуляция DOM? т.е. то, что вы не должны делать с Угловым? –

+1

Нет, манипуляции с DOM - это то, что вы должны делать, когда это необходимо. Единственное требование - держать DOM-манипуляцию вне контроллера и хранить ее в пользовательских директивах. – SoEzPz

1

Чтобы установить атрибут динамически использовать

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

 Смежные вопросы

  • Нет связанных вопросов^_^