添加模板时,我喜欢将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/