流星的未渲染钩子
meteor js unrendered hook?
当我添加模板时,我喜欢使用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);
}
问题是:有没有一种方法可以为模板提供"退出动画",也许可以使用类似于"未渲染"挂钩的东西?如果没有,一个可以即兴制作并包装在一个包裹里吗?
提前谢谢。
0.8.2版本添加了特殊的_uihooks
功能
添加用于注册钩子的初步API,以便在Blaze打算运行时运行插入、移动或移除DOM元素。例如,您可以使用钩子,用于在节点插入、移动或移除时为其设置动画。使用您可以在容器DOM元素上设置_uihooks属性。_uihooks是一个可以具有以下三个属性的任意子集的对象:
insertElement:function(node,next):当Blaze打算在元素下一个之前插入DOM元素节点时调用
moveElement:function(node,next):当Blaze打算将DOM元素节点移动到下一个元素之前时调用
removeElement:function(node):当Blaze打算移除DOM元素节点时调用
请注意,当您在容器元素上设置其中一个函数时,Blaze不会做实际操作;你有责任实际插入、移动或移除节点(通过调用$(node).remove())。
在当前的todos应用中也有一个例子
对于您给定的示例,(它可能不适用于子模板,但您可以尝试):
模板:
<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();
});
}
};
}
我想有一个"Template.preDestroyed"钩子会很好,但在出现类似的情况之前,自己处理应该不会太棘手。
你可以做一些类似的事情:
$(*template instance selector*).fadeOut( 1500, function(){ $(this).remove(); } )
当您希望模板实例离开时。
如果您解释一下是什么情况导致模板未被渲染(以及这意味着隐藏还是从DOM中删除),也许会有所帮助。
从1.0.4开始更新,我们现在有:
- .onRendered
- .on已创建
- .on已销毁
旧方法已被弃用。
- 如何使用铁流星与流星的默认路线
- 在流星上使用微信js-sdk时出现拒绝权限错误
- 流星中DOM的繁殖
- 保存串行端口列表与流星
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 流路由器流星的历史
- 动态路径用于流星/铁路由器
- 流星的全球可变范围
- 流星收集更新不是在更新文档
- 在流星中react不工作的defaultValue
- 剑道UI不与流星合作
- 将HTML5模板转换为流星.js,关于js init的问题
- 流星:点击激活其他模板
- 使用流星调用时,可以多次访问流星中的某个函数
- 流星蒙戈的返回阵列
- 如何处理流星变量&对miniMongo有问题
- 流星JS:铁路由器点击按钮
- 我的流星路线出了什么问题
- 流星和铁路由器中的gzip和minimy服务器路由响应
- 在流星中插入嵌套对象