我试图在Meteor上使用Materialise Forms。在Materialise的页面上,它说我应该初始化"选择"输入字段如下:
$(document).ready(function() {
$('select').material_select();
});
我试过在Meteor.startup上调用它,Template.body.created - 没有用。我收到以下错误:
undefined不是一个功能(评估' $('选择')。material_select()')
我应该在哪里初始化它?
答案 0 :(得分:5)
使用模板的.rendered
callback
<template name="hello">
<select><option>...</option></select>
</template>
然后你可以在你的js文件中有这个
Template.hello.onRendered(function() {
$('select').material_select();
});
模板在渲染已经被触发后很可能被添加到身体中,这就是为什么渲染的主体不起作用。如果使用.created
,DOM尚未呈现。
答案 1 :(得分:1)
Akshat的答案是正确的但是如果它仍然不适合你,可能会有一个问题,订阅尚未解雇或不是每个所需的DOM部分都呈现。然后使用afterflush。
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