Используя AngularJS, мне нужно добавить HTML к элементам ng-repeat, используя селектор: 'objectMapParent-' + post._id
<div ng-repeat="post in posts">
<div id="{{ 'objectMapParent-' + post._id }}">
<h5 style="color:blue; margin-top: 3px;">{{post.title}}</h5>
</div>
</div>
поэтому я создал цикл для циклического перебора элементов массива posts, где для каждого элемента я вызываю функцию: createElement
$scope.posts = [{
_id: "1",
title: "map of london"
}, {
_id: "2",
title: "map of brazil"
}, {
_id: "3",
title: "map of usa"
}];
$scope.posts.forEach(function(post) {
// console.log(post);
createElement("#objectMapParent-" + post._id, function() {
//create map here after append
});
});
Эта функция обратного вызова получает селектор elementParent, который мы используем для поиска узла в DOM, а затем добавляем нужный HTML
var createElement = function(elementParent, cb) {
var aux = elementParent;
var postId = aux.replace("#objectMapParent-", "");
var myElement = angular.element(document.querySelector(elementParent));
var html = "<div id='objectMap-" + postId + "'><div id='BasemapToggle-" + postId + "'></div></div>";
myElement.append(html);
cb();
};
Но что-то не работает, насколько мне известно, функция document.querySelector не может найти селектор.
Мне кажется, что когда он пытается выбрать, узел еще не существует в DOM.
Я воспроизвел код в коде , это может помочь.