javascript - 在 Meteor 应用程序中刷新之前,Materializematerial_select() 不起作用

标签 javascript jquery html meteor materialize

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

    <div class="input-field">
        <select name="color" id="color">
            <option value="%23B1365F">Pink</option>
            <option value="%232952A3">Blue</option>
            <option value="%23711616">Red</option>
            <option value="%2328754E">Green</option>
            <option value="%23BE6D00">Orange</option>
            <option value="%23113F47">Sea Blue</option>
            <option value="%235229A3">Purple</option>
            <option value="%23528800">Olive</option>
            <option value="%2388880E">Gold</option>
            <option value="%23333333">Black</option>
        </select>
        <label for="color">Colour: </label>
    </div>

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

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

但是,选择对话框仅在刷新后才起作用/显示,在刷新之前我在控制台中收到以下错误:

    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)

刷新后,它工作得很好,有人知道为什么会发生这种情况吗? 在 google 上找不到任何内容。

Before refresh

After refresh

提前致谢!

最佳答案

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

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();

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

关于javascript - 在 Meteor 应用程序中刷新之前,Materializematerial_select() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35671867/

相关文章:

javascript - 使用按钮计算价格选择文本区域

javascript - 带有动画的事件时间线

javascript - 在继续执行另一个代码之前等待函数执行

jQuery 同时支持 HOVER 和 FOCUS(鼠标和键盘)

javascript - 使用脚本将属性设置为数据元素

javascript - Google REcaptcha 未显示

javascript - 如何使用 nightwatch.js 中的链接文本单击链接

javascript - 提交表单后更改提交按钮的文本?

jquery - 如何在jquery中使用多个输入字段类名进行验证

HTML 设置 Facebook 图像