Meteor jQuery通过onRendered进行初始化插件

时间:2015-10-06 11:55:51

标签: javascript jquery meteor

为什么这个jQuery插件初始化代码不起作用,除非我用setTimeout包装它?

当我使用setTimeOut时,一切都很好。 你能救我吗?

这不起作用:

Template.checker_one_item_time.onRendered(function(){

    $('#time_custom_scroll').mCustomScrollbar({
        setHeight: 244,
        mouseWheel:{
            enable: true,
            axis: "y"
        }
    });
});

这有效:

Template.checker_one_item_time.onRendered(function(){

    setTimeout(function(){
        $('#time_custom_scroll').mCustomScrollbar({
            setHeight: 244,
            mouseWheel:{
                enable: true,
                axis: "y"
            }
        });
    }, 2000)    
});

1 个答案:

答案 0 :(得分:1)

您是在渲染模板而不等待它依赖的任何订阅准备好了吗?您可能需要look at this pattern

  

您希望在订阅完成时初始化插件的另一个示例:

Template.listing.onRendered(function () {
  var template = this;

  template.subscribe('listOfThings', function () {
    // Wait for the data to load using the callback
    Tracker.afterFlush(function () {
      // Use Tracker.afterFlush to wait for the UI to re-render
      // then use highlight.js to highlight a code snippet
      highlightBlock(template.find('.code'));
    });
  });
});