qq_笑_17
2022-07-21 10:23:07
我正在使用Flickity 庫。這是我的 HTML:<section class="controls-inside controls-light p-0" data-flickity='{ "imagesLoaded": true, "wrapAround": true }'>它在第一次加載時運行良好,它創(chuàng)建了這個 HTML:<section class="controls-inside controls-light p-0 flickity-enabled is-draggable" data-flickity="{ "imagesLoaded": true, "wrapAround": true }" tabindex="0">但是一旦我導(dǎo)航到任何其他頁面并嘗試返回主頁(此代碼所在的位置),它只會生成頂部的第一個代碼(即未初始化的版本)。這是目前我的TL代碼:$(document).on("turbolinks:load", () => { $('[data-toggle="tooltip"]').tooltip() $('[data-toggle="popover"]').popover()})因此,鑒于我正在使用 HTML 初始化,我該如何使用 TL 來處理這個問題?編輯 1如果尚未通過 HTML 初始化 Flickity,我也愿意通過 JS 初始化 Flickity。無論哪種方式對我來說都很好,所以它有效。編輯 2在我的application.js中,我現(xiàn)在有以下內(nèi)容:$(document).on("turbolinks:load", () => { var Flickity = require('flickity'); var flkty = new Flickity( 'section[data-flickity]', { imagesLoaded: true, wrapAround: true, });})這有點工作。發(fā)生的情況是,當(dāng)我嘗試導(dǎo)航到另一個頁面并返回具有滑塊的頁面時,我可以看到它加載了兩次。如,它最初加載滑塊,然后在加載欄進(jìn)度中途我看到它,整個頁面再次刷新。所以感覺它正在做兩倍的工作。我只想加載一次。它還會在我的瀏覽器控制臺中產(chǎn)生以下錯誤。在第一次加載頁面時:flickity.js:57 Uncaught TypeError: Cannot read property 'option' of undefined at new Flickity (flickity.js:57) at HTMLDocument.<anonymous> (application.js:43) at HTMLDocument.dispatch (jquery.js:4670) at HTMLDocument.elemData.handle (jquery.js:4490) at Object../node_modules/turbolinks/dist/turbolinks.js.e.dispatch (turbolinks.js:75) at r.notifyApplicationAfterPageLoad (turbolinks.js:994) at r.pageLoaded (turbolinks.js:948) at turbolinks.js:872Flickity @ flickity.js:57(anonymous) @ application.js:43dispatch @ jquery.js:4670elemData.handle @ jquery.js:4490如果我從控制臺清除錯誤,離開并返回,這是我的控制臺在第二個頁面加載時的唯一錯誤:flickity.js:47 Bad element for Flickity: section[data-flickity]什么可能導(dǎo)致這些錯誤,我該如何解決?
1 回答

青春有我
TA貢獻(xiàn)1784條經(jīng)驗 獲得超8個贊
您可以刪除應(yīng)用程序src目錄中的 JS 文件并使用 NPM 安裝它
npm install flickity
然后,在application.css中需要 Flickity CSS 文件
*= require flickity.css
turbolinks:load然后,在您的 JS 文件中,您可以像對工具提示和彈出框所做的那樣初始化 Flickity 。
import Flickity from 'flickity';
$(document).on("turbolinks:load", () => {
if($('section[data-flickity]').length > 0) {
var flkty = new Flickity( 'section[data-flickity]', {
imagesLoaded: true,
wrapAround: true,
});
}
})
添加回答
舉報
0/150
提交
取消