我正在尝试在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-冲洗