2013-07-21 51 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