vue.js - 将 vanilla-lazyload 与 vuejs 一起使用
问题描述
我是 Vue-js 的新手,我正在尝试使用它。
我的应用程序不是 SPA,我也在使用 Laravel。
我已经尝试过了,它工作正常:
const app = new Vue({
el: '#app',
mounted() {
this.myLazyLoad = new LazyLoad({
elements_selector: '.lazy',
class_loaded: 'lazy-loaded',
load_delay: 500, //adjust according to use case
threshold: 100, //adjust according to use case,
callback_enter: function(el) {
console.log(el.getAttribute("data-src"));
}
});
}
});
<img data-src="{{ $featuredItem->anime->getPortraitImg()}}"
class="lazy img-fluid" src="/img/placeholder-anime.jpg">
但是当我尝试lazyload
在组件中使用时出现问题。例如:
export default {
mounted() {
console.log('Component mounted.');
console.log(Vue.prototype.LazyLoad);
this.myLazyLoad = new LazyLoad({
// elements_selector: '.lazyx',
container: document.getElementById('lazyContainer')
});
// myLazyLoad.loadAll();
},
data() {
return {
episodes: {},
currentPage: 2
}
},
methods: {
loadMoreEpisodes() {
let uri = '/api/v1/episodes?page=' + this.currentPage;
this.axios.get(uri).then(response => {
console.log(response.data.data);
if (this.episodes.length === undefined) {
this.episodes = response.data.data;
} else {
this.episodes = this.episodes.concat(response.data.data);
}
this.myLazyLoad.update();
this.myLazyLoad.loadAll();
});
}
}
}
axios
插件无法识别插入的新数据lazyload
。
我this.myLazyLoad.update();
按照文档中的说明使用,但我无法让它工作。有什么建议么?
解决方案
我认为调用update()
方法时 DOM 不会更新。你可以尝试使用$nextTick
吗?
this.$nextTick(() => {
this.myLazyLoad.update()
})
推荐阅读
- android - 在 Android 中切换应用时保持视频通话应用运行
- css - 伪元素图像未显示在 GitHub 页面上
- python - 为自定义 GPT-NEO 模型实现 do_sampling
- javascript - 如何对变量中的子字符串数字求和?
- javascript - Vuetify - v-data-table 单元格中的图像 - 只有部分图像可见
- reactjs - 如何将底部选项卡导航器与抽屉导航器结合使用
- pandas - 熊猫选择匹配多列
- ios - NSDateFormatter dateFromString 崩溃(从 formatter.date 调用(来自:String)
- node.js - socket.io | 我应该将路由处理程序包装在 io.on('connection') 中吗?
- sql - 在 exec 中声明变量会改善 SQL 查询计划吗?