为什么 Iron-Router 的 onBeforeAction 逻辑不影响 DOM?

Why Does Iron-Router onBeforeAction Logic Not Affect the DOM?

我决定在 Meteor 的页面之间实现一个快速的小动画。我决定这样做的方法是使用 onBeforeAction 挂钩,将 DOM 元素设置为 display:none,然后使用 onAfterAction 对其进行动画处理。

问题是,元素永远不会从屏幕上消失。我不确定我做错了什么。这是我的路线:

Router.route('/priority/:_id', {
  path: '/priority/:_id',
  template: 'priority',
  data: function(){
    return Priorities.findOne({_id: this.params._id})
  },
  onBeforeAction: function() {
    $('.show-title').css('display', 'none'); 
    this.next();
  }
  // ,
  // onAfterAction: function() {
  //   $('.show-title').velocity('transition.fadeIn', 1000);
  // }
})

作为参考,这里是模板:

<template name="priority">
  <h1 class="show-title">Priority: {{title}}</h1>
</template>

我是不是不明白如何正确使用这些动作?

在 DOM 准备好之前立即调用挂钩。

您需要在模板的呈现函数中执行此操作:

Template.priority.rendered = function() {
    $('.show-title').css('display', 'none');
    $('.show-title').velocity('transition.fadeIn', 1000);
}