在Meteor应用程序中刷新之前,Materialise material_select()不起作用

时间:2016-02-27 15:56:29

标签: javascript jquery html meteor materialize

我在Meteor项目的模板中使用了以下选择

    if (Meteor.isClient) {
      Template.layout_settings.onRendered(function () {
        $('select').material_select();
      });
    }

在我的js文件中使用以下内容来初始化Materialise选择下拉列表

    TypeError: $(...).material_select is not a function
      at null.<anonymous> (settings.js:48)
      at template.js:116
      at Function.Template._withTemplateInstanceFunc (template.js:457)
      at fireCallbacks (template.js:112)
      at null.<anonymous> (template.js:205)
      at view.js:107
      at Object.Blaze._withCurrentView (view.js:538)
      at view.js:106
      at Object.Tracker._runFlush (tracker.js:497)
      at onGlobalMessage (setimmediate.js:102)

但是,选择对话框仅在刷新后工作/显示,在刷新之前我在控制台中出现以下错误:

{{1}}

刷新后效果非常好,有没有人知道为什么会这样? 无法在Google上找到任何内容。

Before refresh

After refresh

提前致谢!

1 个答案:

答案 0 :(得分:1)

这不是最漂亮的解决方法,但它解决了这个问题。

Materialze似乎没有及时添加其jQuery函数,无法在Blaze模板的onRendered函数中使用它们。

但它会将函数添加到Package.jquery.$.fn.material_select对象。

我刚创建了自己的jQuery函数,该函数引用了该对象的函数体:

    (function($){
        $.fn.material_select_fix = Package.jquery.$.fn.material_select;
    })(jQuery)
    $("select").material_select_fix();

我希望这也适用于其他情况......