Meteor 带铁路由器的流星不能让光滑的旋转木马工作
我用的是铁制路由器,我有一个路径“模型”,其中有一个项目列表。当用户单击其中一个项目时,将使用新的路由“model”,所选项目的名称将作为参数传递,并用于从数据库加载有关该模型的数据 我想使用slick carousel,使用从数据库返回的图像数组(基于参数)Meteor 带铁路由器的流星不能让光滑的旋转木马工作,meteor,iron-router,slick.js,Meteor,Iron Router,Slick.js,我用的是铁制路由器,我有一个路径“模型”,其中有一个项目列表。当用户单击其中一个项目时,将使用新的路由“model”,所选项目的名称将作为参数传递,并用于从数据库加载有关该模型的数据 我想使用slick carousel,使用从数据库返回的图像数组(基于参数) {{{#每个图像} {{/每个}} 我应该在哪里调用slick init?通常您会在Template.myTemplate.onRendered中的元素上调用插件: Template.xxx.onRendered(function()
{{{#每个图像}
{{/每个}}
我应该在哪里调用slick init?通常您会在
Template.myTemplate.onRendered
中的元素上调用插件:
Template.xxx.onRendered(function() {
$('#carousel').slick();
});`
一般来说,您应该在模板的回调中初始化插件。在您的情况下,这将不起作用,因为在将任何图像插入DOM之前,
onRendered
将触发。对于我见过的其他carousel插件,以下策略有效:
carouselItem
)onRendered
回调添加到carouselItem
,以便在将每个项添加到DOM后初始化插件
{{{#每个图像}
{{>旋转木马}
{{/每个}}
Template.carouselItem.onRendered(函数(){
$('旋转木马').slick();
});
假设slick carousel可以多次初始化,这种方法应该可以工作。请注意,一个可能的缺点是每当更新
图像时,插件都会刷新。解决这个问题的一种方法是在你的应用程序中使用{reactive:false}
选项。我已经尝试了这个方法,但似乎仍然不起作用,我已经用一个简单的console.log检查了onRendered回调正在启动……我怀疑这里的挑战是,在将图像添加到DOM之后,可能需要初始化插件。如果插件可以多次初始化,您可以将每个项目移动到子模板,然后在每个子模板的onRendered中初始化SC。很抱歉,我花了这么长时间检查,但这非常有效!
Template.xxx.onRendered(function() {
$('#carousel').slick();
});`