Javascript Meteor反应式模板更新功能
我想解决Meteor.js中的以下问题: 我有一个HTML元素,仅当用户登录时才会显示在模板中:Javascript Meteor反应式模板更新功能,javascript,meteor,Javascript,Meteor,我想解决Meteor.js中的以下问题: 我有一个HTML元素,仅当用户登录时才会显示在模板中: {{{#if currentUser}{{/if}}。在HTML元素出现后,我需要对其执行JS命令。因此,我需要某种在模板更新后发生的回调。如何做到这一点 在这种情况下,我所知道的反应式数据源中没有一个能做到这一点,例如Meteor.user()source在更新模板之前触发依赖关系。另请参阅我前面的问题。重构模板代码,将{{{if}}块帮助程序的内容放入子模板中,只有在满足这两个条件并且在DOM中
{{{#if currentUser}{{/if}}
。在HTML元素出现后,我需要对其执行JS命令。因此,我需要某种在模板更新后发生的回调。如何做到这一点
在这种情况下,我所知道的反应式数据源中没有一个能做到这一点,例如
Meteor.user()
source在更新模板之前触发依赖关系。另请参阅我前面的问题。重构模板代码,将{{{if}}
块帮助程序的内容放入子模板中,只有在满足这两个条件并且在DOM中插入了隐含的新HTML内容时,才会触发它自己的onRendered
生命周期事件
HTML
我会将需要的代码添加到自动运行中
Template.mytemplate.onRendered(function() {
Tracker.autorun(function() {
user = Meteor.user()
if (user) {
// Your code here
}
}
}
为什么不为登录事件使用一个钩子呢?这会不会不起作用,或者这仍然是在模板更新之前?是的,确实是这样,我也尝试过。不!正如我在帖子中解释的那样,这是行不通的!如前所述,
Meteor.user()
被动源在模板更新之前触发自动运行,因此我需要在插入的DOM元素上运行的JS代码失败。您能否显示您的onRendered with autorun和模板的外观?onRendered
包含我想在输入上运行的JS代码。我的autorun
回调与if(Meteor.user())
一起运行也是如此。autorun
回调是在全局范围内定义的,但我通过添加一个alert
对其进行了测试,它确实运行了-但是我在回调中使用的jQuery没有找到只在后面出现的输入
字段。Meteor.user()在autorun内部还是外部?如果(Meteor.user())
在autorun内部。很抱歉,对于使用onCreated
进行jQuery模板操作,再次表示“否”-引用Meteor docs“在首次评估模板逻辑之前使用此方法添加的回调”。
Template.childTemplate.onRendered(function(){
// here you go
});
Template.mytemplate.onRendered(function() {
Tracker.autorun(function() {
user = Meteor.user()
if (user) {
// Your code here
}
}
}