问题:
- oncreated:模板尚未呈现(每个模板仅触发一次)。
- onrendered:模板已呈现(可多次触发)。
是否可能仅在模板完全呈现后触发函数?
我有一系列类似于此的消息列表:
<template name="messages">
<div id="messages">
<span class="message">{{this.message}}</span>
</div>
</template>
每当将新消息插入DOM时,我想知道消息的文本是否包含用户名。
下面的代码片段会多次运行,但它应该只运行一次。
Template.messages.rendered = function() {
var username = Meteor.user().services.twitter.screenName;
$("#messages").bind("DOMSubtreeModified", function() {
var lastmessage = $('.message').last().text();
if (lastmessage.indexOf(username) > -1) {
//Do something
}
}
}
通过创建并更改模板以包含单个消息,可以交替呈现已创建的内容,并使函数每次针对新消息运行一次。这意味着它获取最后一个消息变量的倒数第二个值:
Template.message.created = function() {
var username = Meteor.user().services.twitter.screenName;
var lastmessage = $('.message').last().text();//this is not the last message
if (lastmessage.indexOf(username) > -1) {
//Do something
}
}