AngularJS 在 ng-repeat 元素中追加 HTML
AngularJS append HTML in the ng-repeat element
使用 AngularJS 我需要将 HTML 附加到 ng-repeat 的元素,使用 select 或:'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
});
});
这个回调函数得到一个selector,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 函数找不到 selector.
在我看来,当它尝试 select 时,该节点在 DOM 中尚不存在。
我复制了codepen中的代码,可能会有帮助。
如何在自定义指令中封装 jQuery 代码
任何操作 DOM 的 jQuery 代码都应封装在 custom directive so that it is executed when the AngularJS framework ng-repeat directive 实例化元素中。
<div ng-repeat="post in posts">
<div id="{{ 'objectMapParent-' + post._id }}">
<h5 style="color:blue; margin-top: 3px;">{{post.title}}</h5>
<my-element post="post"></my-element>
</div>
</div>
app.directive("myElement", function() {
return {
link: postLink,
};
function postLink(scope,elem,attrs) {
var post = scope.$eval(attrs.post);
var html = `
<div id="objectMap-${post._id}">
<div id="BasemapToggle-${post._id}">
</div>
</div>
`;
elem.append(html);
}
})
要使用 jQuery,只需确保它在 angular.js
文件之前加载。
有关详细信息,请参阅
使用 AngularJS 我需要将 HTML 附加到 ng-repeat 的元素,使用 select 或:'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
});
});
这个回调函数得到一个selector,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 函数找不到 selector.
在我看来,当它尝试 select 时,该节点在 DOM 中尚不存在。
我复制了codepen中的代码,可能会有帮助。
如何在自定义指令中封装 jQuery 代码
任何操作 DOM 的 jQuery 代码都应封装在 custom directive so that it is executed when the AngularJS framework ng-repeat directive 实例化元素中。
<div ng-repeat="post in posts">
<div id="{{ 'objectMapParent-' + post._id }}">
<h5 style="color:blue; margin-top: 3px;">{{post.title}}</h5>
<my-element post="post"></my-element>
</div>
</div>
app.directive("myElement", function() {
return {
link: postLink,
};
function postLink(scope,elem,attrs) {
var post = scope.$eval(attrs.post);
var html = `
<div id="objectMap-${post._id}">
<div id="BasemapToggle-${post._id}">
</div>
</div>
`;
elem.append(html);
}
})
要使用 jQuery,只需确保它在 angular.js
文件之前加载。
有关详细信息,请参阅