Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 带铁路由器的流星不能让光滑的旋转木马工作_Meteor_Iron Router_Slick.js - Fatal编程技术网

Meteor 带铁路由器的流星不能让光滑的旋转木马工作

Meteor 带铁路由器的流星不能让光滑的旋转木马工作,meteor,iron-router,slick.js,Meteor,Iron Router,Slick.js,我用的是铁制路由器,我有一个路径“模型”,其中有一个项目列表。当用户单击其中一个项目时,将使用新的路由“model”,所选项目的名称将作为参数传递,并用于从数据库加载有关该模型的数据 我想使用slick carousel,使用从数据库返回的图像数组(基于参数) {{{#每个图像} {{/每个}} 我应该在哪里调用slick init?通常您会在Template.myTemplate.onRendered中的元素上调用插件: Template.xxx.onRendered(function()

我用的是铁制路由器,我有一个路径“模型”,其中有一个项目列表。当用户单击其中一个项目时,将使用新的路由“model”,所选项目的名称将作为参数传递,并用于从数据库加载有关该模型的数据

我想使用slick carousel,使用从数据库返回的图像数组(基于参数)


{{{#每个图像}
{{/每个}}

我应该在哪里调用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();
    });`