【发布时间】:2021-11-09 10:00:02
【问题描述】:
我正在运行一个 nuxtjs 应用程序,它显示来自 wordpress 的数据。在我的项目概述页面上,我希望将不同项目的图像显示为带有同位素和过滤的砖石。当我在根目录下打开网站并导航到项目页面(/项目)时,一切都正确显示。当我手动重新加载页面或输入 URL 时,布局会崩溃。经过一些错误处理后,我发现在页面重新加载同位素想要布局卸载的项目数据。 在页面上输入 - “projekte geladen”。 重新加载/手动 - “keine projekte”。
代码:
<script>
/* eslint-disable */
let Isotope;
let imagesLoaded;
if (process.client) {
Isotope = require('isotope-layout');
imagesLoaded = require('imagesloaded')
}
export default {
mounted() {
this.isCaseStudy();
this.isotope();
},
computed: {
page(){
//return this.$store.getters.filterProject;
return this.pages.find(page => page.id === 110)
},
pages(){
return this.$store.state.pages;
},
projects(){
return this.$store.state.projects;
},
},
created(){
this.$store.dispatch("getPages");
this.$store.dispatch("getProjects");
},
methods: {
isCaseStudy(){
$(".item").each(function(){
$(this).has('img.case-studyImg').addClass('case-study');
});
},
isotope() {
console.log("isotope wird ausgeführt");
if(this.projects.length != 0){
console.log("projekte geladen!")
let iso = new Isotope('.items', {
itemSelector: '.item',
masonry: {
columnWidth: '.grid-sizer'
}
});
imagesLoaded(".items").on( 'progress', function() {
// layout Isotope after each image loads
console.log("each image loaded");
iso.layout();
});
}else{
console.log("keine projekte");
}
},
filterItems(selector) {
let oldActive = $(".filters .btn-primary").first();
console.log(oldActive);
if(oldActive.hasClass(selector)){
return;
}
let currentActive = $(".filters a." + selector).first();
console.log(currentActive);
currentActive.removeClass("btn-default").addClass("btn-primary");
oldActive.removeClass("btn-primary").addClass("btn-default");
iso.arrange({filter: `.${selector}`});
}
}
}
</script>
所以在重新加载函数 this.isotope() 之前从计算加载的 projects() 加载我相信。 如果这是真正的问题,我如何在加载项目时完成同位素加载...
【问题讨论】:
标签: json wordpress asynchronous nuxt.js jquery-isotope