我想在Meteor.js中解决以下问题:
我有一个HTML元素,只有在用户登录时才会出现在模板中:
{{#if currentUser}} <input ...> {{/if}}
。 HTML元素出现后,我需要在它上面执行JS命令。因此,我需要在更新模板后发生某种回调。怎么做到这一点?
在这种情况下,我所知道的所有被动数据源都没有这样做,例如{<1}}源在更新模板之前触发依赖。另请参阅我之前的问题here。
答案 0 :(得分:3)
重构您的模板代码,将{{#if}}
块帮助器的内容放在子模板中,只有在满足条件且新的时候才会触发它自己的onRendered
生命周期事件隐含的HTML内容将插入DOM中。
HTML
<template name="parentTemplate>
{{#if currentUser}}
{{> childTemplate}}
{{/if}}
</template>
<template name="childTemplate">
{{! whatever}}
</template>
JS
Template.childTemplate.onRendered(function(){
// here you go
});
答案 1 :(得分:0)
我会将所需的代码添加到autorun
。
Template.mytemplate.onRendered(function() {
Tracker.autorun(function() {
user = Meteor.user()
if (user) {
// Your code here
}
}
}