添加模板时,我喜欢将Meteor的渲染钩用于入口动画。这是一个例子:

在我的模板中:

<template name="main">
    {{#each people}}
        {{>person}}
    {{/each}}
</template>

<template name="person">
    <li> {{name}} </li>
</template>


在我的javascript文件中:

//in js file
Template.person.rendered = function() {
    $(this.firstNode).hide().fadeIn(1500);
}


live example here

问题:有没有办法为模板提供“退出动画”,也许使用“未渲染”的钩子?如果不是,可以即兴包装一个包装吗?

提前致谢。

最佳答案

Version 0.8.2 Added a special _uihooks feature


  添加初步的API,以注册要在Blaze打算运行时运行的钩子
  插入,移动或删除DOM元素。例如,您可以使用这些
  用于在插入,移动或删除节点时为节点设置动画的挂钩。使用
  它们,您可以在容器DOM元素上设置_uihooks属性。
  _uihooks是一个对象,可以具有以下三个属性的任何子集:
  
  insertElement:函数(节点,下一个):当Blaze打算在元素next之前插入DOM元素节点时调用
  
  moveElement:函数(节点,下一个):当Blaze打算将DOM元素节点移动到next元素之前时调用
  
  removeElement:函数(节点):当Blaze打算删除DOM元素节点时调用
  
  请注意,在容器元素上设置这些功能之一时,
  Blaze不会进行实际操作;您有责任
  实际插入,移动或删除节点(通过调用
  $(node).remove(),例如)。


There's also an example of this in the current todos app

对于给定的示例,(它可能不适用于子模板,但是您可以尝试):

模板:

<template name="main">
  <ul>
    {{#each people}}
      <li>{{name}}</li>
    {{/each}}
</ul>
</template>


Javascript:

Template.main.rendered = function(){

  this.find('ul')._uihooks = {
    insertElement: function(node, next) {
      $(node)
        .hide()
        .insertBefore(next)
        .fadeIn();
    },
    removeElement: function(node) {
      $(node).fadeOut(function() {
        this.remove();
      });
    }
  };
}

关于javascript - meteor js未渲染的钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26833596/

10-10 10:50