2013-07-21 54 views
0

我轉換我的啤酒廠網站使用流星。在轉換過程中,我遇到了一些庫代碼集成中的錯誤。原始網站使用lightbox2 http://lokeshdhakar.com/projects/lightbox2/彈出我們設計的圖形模式。防止默認的瀏覽器動作,但允許流星庫代碼

在meteor版本中,模式看起來像是要加載,但是直接導航到模式應該顯示的圖像資源。點擊'查看Brew圖表'http://twbrewing.meteor.com/beers查看問題的實際情況。

對我來說,它看起來像庫代碼正在工作,但由於某種原因不會阻止默認的瀏覽器操作。我嘗試在click事件上使用preventDefault(),但是沒有發生任何事情。想法?

回答

1

將HTML包裝到{{#constant}}...{{/constant}}中,並在模板渲染函數中運行任何lightbox代碼,例如

Template.pictures.rendered = function() { 
    lightBoxInit(); 
} 

我真的不知道是什麼的收藏夾功能被稱爲......它要麼東西,他們會告訴你在文檔上運行頁面加載,或者被包裹在源$(document).ready()電話。更好的是,如果有一個API調用直接在元素上運行(像$('img').lightbox()$('img').each(function(el) { lightbox(el) })

對不起,我不熟悉燈箱,但這是你需要的策略,你需要尋找:)

請注意,渲染函數也在重新渲染時調用。這對大多數庫來說都沒問題,但是如果你注意到任何奇怪的行爲,你需要添加一些邏輯來確保相關鏈接不會被處理兩次(通過使用.data布爾型或銷燬並重新創建包裝器)。

+0

所以我看到的問題是,除了加載腳本本身和修改html屬性之外,lightbox還需要其他任何東西。它掃描HTML文檔中的數據燈箱屬性或rel = lightbox以確定應該添加燈箱。 https://github.com/lokesh/lightbox2/blob/master/coffee/lightbox.coffee ...它看起來像是一個自我執行的匿名函數,它在加載時執行。我想我理論上可以將data-lightbox屬性添加到呈現的元素上,但我不明白爲什麼這會解決任何問題......我會嘗試一下並讓您知道 – funkyeah