当使用Materialize和Meteor时,我应该在哪里初始化选择



我正在尝试在Meteor上使用Materialize Forms。在它的Materialize页面上,它说我应该初始化这样的"选择"输入字段:

$(document).ready(function() {
  $('select').material_select();
});

我试过在Meteor.startup、Template.body.created上调用这个,但没有成功。我得到以下错误:

undefined不是函数(正在评估'$('select').material_select()')

我应该在哪里初始化它?

使用模板的.rendered回调

<template name="hello">
    <select><option>...</option></select>
</template>

然后你可以在你的js文件中有这个

Template.hello.onRendered(function() {
    $('select').material_select();
});

模板很可能是在渲染后添加到主体中的,所以渲染的主体不起作用。如果使用.created,则DOM尚未呈现。

Akshat的答案是正确的,但如果它仍然不适用于您,则可能存在订阅尚未启动或DOM的每个所需部分都未呈现的问题。然后使用后冲洗。

Template.listing.onRendered(function () {
    var template = this;
    template.subscribe('listOfThings', function () {
    Tracker.afterFlush(function() {
       template.$('select').material_select();
    });
  });
});

以下是关于这一点的对话:https://github.com/meteor/meteor/issues/4401#issuecomment-103340262

以及文档:http://docs.meteor.com/api/tracker.html#Tracker-冲洗

相关内容

最新更新