【发布时间】:2018-04-25 14:18:27
【问题描述】:
我正在使用 Masonry JavaScript 网格布局库 https://masonry.desandro.com/。使用 Angular *ngfor 直接从 DOM 将新项目附加到网格时遇到问题,它遍历数组,如下所示:
<div class="grid">
<div class="grid-item grid-item--height{{i}}" *ngFor="let i of array">
{{i}}
</div>
</div>
因为我没有使用“附加砌体方法”附加它们,所以砌体不会将它们布置出来。每次用户向下滚动时,该数组都会获取新元素。于是调用了一个 JavaScript 方法:
onScrollDown() {
// add another 20 items
this.sum += 20;
for (let i = start; i < this.sum; ++i) {
this.array.push(i); }
}
当数组获得更多元素时,它会自动创建新的 html 项。所以我需要在创建新项目后再次找到砌体布局的方式。在将元素添加到 OnScrollMethod 中的数组后,我尝试调用 $grid.masonry('layout') 但它不起作用。 我也在尝试 $('.grid').masonry('reloadItems') ,但是调用此方法时新项目与以前的项目重叠。
我将不胜感激。
更新:
我正在使用我的角度初始化组件方法初始化砌体,如下所示:
ngOnInit() {
this.$grid = jQuery('.grid').masonry({
// options
itemSelector: '.grid-item',
columnWidth: 384,
gutter: 24
});
【问题讨论】:
标签: javascript html angular jquery-masonry masonry