使用'这个'引用meteor.template.rendered

时间:2015-07-15 19:39:14

标签: javascript jquery mongodb meteor

假设我有一个名为message的Meteor模板,客户端可以在其中发布消息。帖子被包装在一个div中,它的id等于Mongo集合中的唯一id。

<template name="message">
<div class="msg comment" id="{{this._id}}">{{msg}}</div>
</template>

无论如何都要引用Meteor.message.rendered中的具体ID?现在我正在使用this._id并且它无效。这是我的功能

Template.message.rendered = function() {
texts = $('this._id').html();
texts = texts.replace(/#(\w+)/g, 
"<a href='https://www.google.com/?q=$1'target='_blank'>$&</a>");
$("this._id").html(texts);
}

1 个答案:

答案 0 :(得分:1)

四件事:

  • 您使用的是字符串而不是变量:$('this._id') - &gt; $(this._id)
  • 渲染函数的上下文(this)是模板助手,而不是数据本身(模板的上下文),因此将this._id替换为this.data._id匹配{{ this._id }}
  • 这是一个ID选择器:$(this.data._id) - &gt; $('#' + this.data._id)
  • 每当重新呈现模板时都会运行渲染回调,并且每当渲染子模板(模板中包含的模板)时,您应该标记何时渲染(source,有关流星渲染的有趣文章)。

最终代码:

Template.message.rendered = function() {
    if(!this.rendered) {
        this.rendered = true;
        texts = $('#' + this.data._id).html();
        texts = texts.replace(/#(\w+)/g,"<a href='https://www.google.com/?q=$1'target='_blank'>$&</a>");
        $('#' + this.data._id).html(texts);
    }
}