3

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

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

我试过在 Meteor.startup、Template.body.created 上调用它——没有任何效果。我收到以下错误:

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

我应该在哪里初始化它?

4

2 回答 2

5

使用模板的.rendered 回调

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

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

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

模板很可能在渲染已经触发后添加到正文中,这就是渲染的正文不起作用的原因。如果您使用.created尚未渲染的 DOM。

于 2015-02-28T16:26:57.887 回答
1

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-flush

于 2016-06-21T12:38:33.693 回答