2016-07-07 2 views
2

Я генерация списка, как показано нижеКак получить элемент по ID для динамически генерируемого ID в AngularJS?

<div ng-repeat="list in fileUploadList" > 
     <div id="{{list}}Upload" ></div> 
</div> 

Внутри контроллера я должен получить элемент по идентификатору, так что я с помощью

document.getElementById($scope.fileUploadList[0] + 'Upload') 

я консоль вошла, но она возвращается null то, что я должен делать?

Функция в контроллере $ scope.loadHandleImage = функция() {

console.log(document.getElementsById($scope.fileUploadList[0] + 'Upload')); 
     for (var i = 0; i < $scope.fileUploadList.length; i++) 
     { 
      document.getElementById($scope.fileUploadList[i] + 'Upload').addEventListener('change', handleImage, false); 
     } 

, где handleImage функция будет называться

+0

попробуйте, возможно, 'angular.element ('#' + $ scope.fileUploadList [0] + 'Upload');', что такое 'list'? это просто строка? с пробелами? –

+0

Контроллер не должен знать вашего DOM. Если вы вызываете документ из своего контроллера, вы не понимаете Угловое разделение проблем дизайна. –

+0

'list' возвращает строку –

ответ

0

вместо Ид использовать имя класса на элементах, а затем получить элементы по имени класса - это даст вам какой-то массив, который вы можете прокрутить и получить любой атрибут, который вы хотите от каждого элемента.

0

Использование

angular.element('#' + $scope.fileUploadList[0] + 'Upload').on('change', handleImage) 

вместо document.getElementById и addEventListener

+0

Ошибка его предоставления JQLite –

0

Простой способ будет (если вы не заботитесь о списке ваш объект не находится в случайном ид)

<div ng-repeat="list in fileUploadList" > 
    <div id="{{$index}}Upload" ></div> 
</div> 

Затем в контроллере получить идентификатор по

document.getElementById('0Upload') 
document.getElementById('1Upload') 

..etc

+0

Как узнать точное количество элементов, возвращаемых массивом. –

+0

Это будет файлUploadList.length – Srijith

1

У меня проблема с документом не была готова, когда вы пытались получить доступ к элементу. Использование метода angle.element (document) .ready

angular.element(document).ready(function() { 
console.log(document.getElementById($scope.fileUploadList[0] + "Upload")) 
}); 

вот рабочий пример http://jsfiddle.net/hqqewnyc/

+0

Я проверил с помощью отладчика. Его учет IDs –

+0

Пожалуйста, уточните ответ – jitender

0

Не угловой эксперт, но на основе моего опыта DOM есть способы получить атрибут идентификатора. Путь я сделать в обычном JavaScript здесь

str = ""; 
for(tmp=0;tmp<10;tmp++) 
{ 
    str = str + "<div id='myid" + tmp + "' onclick='idofobject(\"myid" + id + "\")'>Click Me</div>"; 
} 

я создал HTML с DIV и динамически присвоить ему идентификатор, как myid1 myid2 и т.п. есть вызов функции для каждого сНу idofobject, который принимает идентификатор

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

0

Поскольку каждый div получает динамический идентификатор, , поэтому динамические элементы должны выбираться с использованием отношения родительского дочернего элемента. EX: Если вы добавите две кнопки в div, динамически извлеките первый и второй дочерние элементы этого div, чтобы получить каждую кнопку.

+0

Вы можете видеть в моем заданном коде, который я называю им динамически .. :) –

+0

Пожалуйста, просмотрите приведенный ниже поток, чтобы получить дочерние элементы, используя внешний div, вы должны дать внешний div id, и они получают дочерние элементы для этого id: http://stackoverflow.com/questions/19500592/javascript-get-child-nodes-of-a-div –

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