Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor反应式模板更新功能_Javascript_Meteor - Fatal编程技术网

Javascript Meteor反应式模板更新功能

Javascript Meteor反应式模板更新功能,javascript,meteor,Javascript,Meteor,我想解决Meteor.js中的以下问题: 我有一个HTML元素,仅当用户登录时才会显示在模板中: {{{#if currentUser}{{/if}}。在HTML元素出现后,我需要对其执行JS命令。因此,我需要某种在模板更新后发生的回调。如何做到这一点 在这种情况下,我所知道的反应式数据源中没有一个能做到这一点,例如Meteor.user()source在更新模板之前触发依赖关系。另请参阅我前面的问题。重构模板代码,将{{{if}}块帮助程序的内容放入子模板中,只有在满足这两个条件并且在DOM中

我想解决Meteor.js中的以下问题:

我有一个HTML元素,仅当用户登录时才会显示在模板中:
{{{#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
     }
   }
}