在呈现模板之前调用Meteor JS模板呈现函数?
我试图在jQueryUI中使用Buttonset小部件。我已经加载了包,我的模板可以很好地呈现单选按钮。我有一个“呈现”函数来调用JQ UI例程来设置按钮集:在呈现模板之前调用Meteor JS模板呈现函数?,meteor,Meteor,我试图在jQueryUI中使用Buttonset小部件。我已经加载了包,我的模板可以很好地呈现单选按钮。我有一个“呈现”函数来调用JQ UI例程来设置按钮集: Template.teamList.rendered = function () { $("#buttonsetID").buttonset(); } 但是它看起来像是在呈现模板之前调用了呈现函数!我在函数中插入一个console.log,它会在屏幕上出现任何内容之前打印到控制台。因此没有设置任何单选按钮,因此.buttonse
Template.teamList.rendered = function () {
$("#buttonsetID").buttonset();
}
但是它看起来像是在呈现模板之前调用了呈现函数!我在函数中插入一个console.log,它会在屏幕上出现任何内容之前打印到控制台。因此没有设置任何单选按钮,因此.buttonset()调用不执行任何操作。如果我在呈现页面后在控制台中进行调用,jQueryUI会做正确的事情,并显示我的按钮集
.rendered函数不应该在所有设置完成后调用吗?我做错什么了吗
谢谢
编辑:
例如,在排行榜示例中也可以看到同样的情况
如果您添加:
Template.leaderboard.rendered = function() {
alert($('.player').length);
}
显示页面时,它将显示0。如果需要添加一些JQuery事件,或者在本例中需要添加JQuery UI元素,则很难访问DOM项。
呈现的
仅适用于第一次将模板添加到页面时将出现在DOM中的元素。假设订阅数据需要无限长的时间才能到达,然后查看模板并查看哪些元素将以默认状态出现
使用该示例,我们不能假设在排行榜模板呈现时玩家可用(这取决于订阅)。要以玩家为目标,应使用玩家模板上的rendered
回调
很难概括何时应用jQuery插件的策略,但以下是一些想法:
- 如果元素总是以默认状态添加(例如,元素是硬编码的,不依赖于条件),请使用
回调呈现的
- 使用
呈现的
回调最具体的子模板以该子模板为目标(例如,上面的播放器模板)
- 如果元素的外观取决于事件(例如,单击按钮),请考虑使用回调来定位该元素
- 如果元素的外观取决于反应状态,请考虑使用回调来定位该元素。有关示例,请参见