введите описание изображения здесь. Я пытаюсь добавить динамические элементы HTML, которые имеют AngularJS ng-click
, но не работают. Я пробовал {{2+2}}
в iEl.append(<div>{{2+2}}<div>)
, но он не работает.
Что я делаю не так?
$scope.appendContent = function() {
var iEl = angular.element( document.querySelector( '#med2' ) );
iEl.append('<div class="row well" ng-controller=Directive id="med1"> <div class="col-sm-12" > <p>Medication {{2+2}}</p> <div class="col-sm-4"> Medicine <div class="well" dragular="{"classes":{"mirror":"custom-green-mirror"},"nameSpace":"same"}"></div> </div> <div class="col-sm-3"> Frequency <div class="well" dragular="{"classes":{"mirror":"custom-green-mirror"},"nameSpace":"same"}"></div> </div> <div class="col-sm-4"> Days <div class="well" dragular="{"classes":{"mirror":"custom-green-mirror"},"nameSpace":"same"}" ng-click=appendContent()></div> </div> <div class="col-sm-1"> <button class="close cursorDefault" ng-click="removeDIV()">X</button> </div> </div>');
};
Я хочу, чтобы html выглядел так, автоматически добавляйте, когда когда-либо заполняете значение.
использование:
$ scope.appendContent = function() {
$ scope. $ apply (function() {
var iEl = document.getElementById('med2');
iEl.append('content')
});
}
Никогда не манипулируйте DOM в Angular, если его можно избежать (за исключением случаев, когда вы находитесь в директиве). Вместо того чтобы использовать querySelector
и angular.element
, вы должны использовать ng-repeat
директивы тег внутри вашей #med2
тега в вашем HTML (и, вероятно, можно удалить идентификатор, если он не используется в другом месте). Этот тег ng-repeat
будет включать HTML-код, текущий в вашей строке JavaScript (который не должен быть в вашем исходном тексте JavaScript). Затем, когда appendContent
вызывается, вместо добавления HTML к элементу напрямую, вы должны добавить объект в массив, который представляет базовые данные, контролируемые ng-repeat
.