- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试让 Packery/Masonry 在组件上工作。 Packery 正在检测容器,但将其高度设置为零,这表明即使我使用的是 imagesLoaded,内容仍未加载。我尝试过使用各种生命周期 Hook ,但它们都有相同的结果,所以我不知道哪里出错了。
import {BlogService} from './blog.service';
import {Blog} from './blog.model';
import {Component, ElementRef, OnInit, AfterViewInit} from '@angular/core';
import {LinkyPipe} from '../pipes/linky.pipe';
declare var Packery: any;
declare var imagesLoaded: any;
@Component({
moduleId: module.id,
selector: 'blog',
templateUrl: 'blog.component.html',
providers: [BlogService],
pipes: [LinkyPipe]
})
export class BlogComponent implements OnInit, AfterViewInit {
blogs: Blog[];
errorMessage: string;
constructor(private _blogService: BlogService, public element: ElementRef) { }
ngOnInit() {
this.getBlogs();
}
ngAfterViewInit() {
let elem = this.element.nativeElement.querySelector('.social-grid');
let pckry;
imagesLoaded(elem, function(instance) {
console.log('loaded');
pckry = new Packery(elem, {
columnWidth: '.grid-sizer',
gutter: '.gutter-sizer',
percentPosition: true,
itemSelector: '.social-card'
});
});
}
getBlogs() {
this._blogService.getPosts()
.subscribe(
blogs => this.blogs = blogs,
error => this.errorMessage = <any>error);
}
}
最佳答案
好的,我发现我需要使用 AfterViewChecked
来代替,但是当我第一次尝试时,它最终变成了一个永无止境的循环,因为每次 DOM 更改时都会触发它,如您所见有一些额外的检查,所以它只触发一次。仍然不确定这是否是正确的方法,但它现在有效。
import {BlogService} from './blog.service';
import {Blog} from './blog.model';
import {Component, ElementRef, OnInit, AfterViewChecked} from '@angular/core';
import {LinkyPipe} from '../pipes/linky.pipe';
declare var Packery: any;
declare var imagesLoaded: any;
@Component({
moduleId: module.id,
selector: 'coco-blog',
templateUrl: 'blog.component.html',
providers: [BlogService],
pipes: [LinkyPipe]
})
export class BlogComponent implements OnInit, AfterViewChecked {
blogs: Blog[];
errorMessage: string;
isGridInitialized: boolean;
constructor(private _blogService: BlogService, public element: ElementRef) { }
ngOnInit() {
this.getBlogs();
}
ngAfterViewChecked() {
if (this.blogs && this.blogs.length > 0 && !this.isGridInitialized) this.initGrid();
}
getBlogs() {
this._blogService.getPosts()
.subscribe(
blogs => this.blogs = blogs,
error => this.errorMessage = <any>error);
}
initGrid() {
this.isGridInitialized = true;
let elem = document.querySelector('.social-grid');
let pckry;
imagesLoaded(elem, function(instance) {
console.log('all images are loaded');
pckry = new Packery(elem, {
percentPosition: true,
itemSelector: '.social-card',
gutter: 20
});
});
}
}
关于angular - 让 Packery/Masonry 与 angular2 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159337/
我尝试将同位素与 packery 一起使用,但我不断收到以下错误“错误:无布局模式:packery” 代码如下: HTML: Javascript/Jquery: var $
我正在使用 Metafizzy 的 Packery 库创建一个布局,其中列出了帖子标题和缩略图。单击这些按钮后,我将隐藏初始内容,然后使用 ajax 加载帖子的其余部分以替换该初始内容。 我正在寻找有
我正在尝试在图像上传功能上结合 packery 和 dragabilly。我在同一个函数中初始化它们,但得到了 packery 没有初始化的错误。我尝试将我的代码分成两个函数,一个用于处理图像上传和拖
任何人都可以帮助我如何在拖动时保存包装元素的顺序。然后在保存的订单中重新订购包装元素。这是我之前使用的代码 $val){ ?> ">
我正在使用 Packery 一个 JavaScript 库和 jQuery 插件,由 David DeSandro 创建,可实现无缝且可拖动的布局。我用它来设置我的投资组合,但下面的代码不起作用。我想
我想使用这个插件:http://packery.metafizzy.co/ with layout mode: 一丝不苟如首页所述。我浏览了文档的每一页,但找不到如何将其设置为细致而不是默认的砖石布局
这是我的代码笔:http://codepen.io/helloworld/pen/JoKmQr 假设我从服务器获取了一组数据。数据有标题和订单号。 我有 5 个数组项,orderNumber 从 1
我正在尝试使用 packery 来对齐一些 div。一切正常,但我有一个烦人的空间,我不知道如何摆脱它。这个空间只出现在第二行,而且它们一直在继续。
我想强制网格元素始终位于最后一个位置,即使在移动元素之后也是如此。 我认为一个好的方法是 //get the total number of items var totalItems = $('.gr
我正在尝试使用 Packery 制作混合宽度/固定高度的布局。 虽然我可以让 Packery 工作,并且布置得很好——我需要知道布局完成后屏幕上显示的顺序(而不是 DOM 的顺序),以便我可以对某些
我正在使用 Packery 插件在我正在构建的网站上为我的图片库提供更有趣的布局。 我时不时地访问该页面,一些图像像这样相互重叠: 但是当我刷新页面时,它会正确显示: 我尝试在容器元素上指定高度但无济
我使用JQuery Packery效果很好。 我想到的问题是如何使项目容器在页面上居中? ... ... ... ... 我尝试过CSS: #container { marin:
我想删除 2 个元素,然后在单击按钮时将它们添加回使用 Packery 构建的网格。代码如下: $('.append-button').on( 'click', function() { // c
我似乎在使用将 packery 集成到 angular 中的目录时遇到了问题。当我加载到第一页时,它似乎工作得很好,但是当我离开页面并返回时,它看起来像是以一种奇怪的方式破坏包装,它正在工作,但一切似
当用户将鼠标悬停在包装网格中的网格项上时,我尝试在它们上模仿此动画(请注意,网格项包含背景图像): http://thefoxwp.com/portfolio-packery-4-columns/ 为
我找到了this question答案对我来说很完美。可以帮助我实现这个问题的答案吗?可以在 codepen 或其他地方使用 ng-repet 进行此更改吗?我不知道他说要实现是什么意思: 1)我必须
所以我有一个 Packery 网格,希望随机排列元素,以便它们至少可以完美地组织到容器的高度......如果宽度关闭,那很好。 看这样的布局:
我正在寻找 JavaScript Packery 成分。我想将当前的实现从 GridStack 切换到 Packery。现在阻止我的一件事是 Packery 中缺乏组件(面板)的动态调整大小效果。目前
在我的JQuery Packery app 我想将我的项目放在容器元素内。我使用以下结构: ... ... ... ... 我之前使用了 JQuery Isotope,我可以在其中
这是我 fiddle 中的 javascript 代码 http://jsfiddle.net/eadaradhiraj/v5d1qt7q/3/ // external js: packery.pkg
我是一名优秀的程序员,十分优秀!