我是Meteor.js的新手,所以希望这对我来说是无能为力而不是对平台的限制,因为它非常了不起。
我想要实现的目标非常简单:每当模板助手使用新数据(但不是来自数据库!)时运行Javascript。
一个简单的示例场景可能是:用户请求获取一些图像。但是,不仅仅是图像弹出",一旦它们被完全加载(除了定位它们之外等等),它们应该被隐藏和淡化。
换句话说,在帮助程序接收到新数据之后,应该运行一个函数来处理该数据(在实际呈现之前无法在服务器上完成)。
如果数据来自集合,那么使用订阅回调很容易实现这一点。
但是,一旦帮助者呈现新数据,似乎没有回调。
是的,可以添加几毫秒的超时,但这在我看来并不是一个干净或可靠的解决方案,因为你显然永远不知道需要渲染多长时间。
我搜索过几十个看似相关的帖子,但却找不到任何可以被认为是标准的帖子"实现这一目标的方式......
这里有一些(简化的)示例代码来说明场景:
var images = [];
//When showImages is updated with new data from the images array...
Template.gallery.helpers({
showImages: function () {
return images;
}
});
//...this function should fire
function doMagicWork () {
...
}
//Because firing it on the on click event would be too soon,
//as the helper hasn't rendered yet
Template.gallery.events({
"click #fetch_images": function (event) {
Meteor.call("getImagesFromServer", function(error, result) {
images = result.content;
});
}
});
答案 0 :(得分:0)
有一项待处理功能,可为UI更改添加动画/转换支持(referenced here)
作为临时解决方案,您可以使用Blaze UI挂钩。有很多包使用它们。示例here和here
一般来说,Meteor方式是减少锅炉板代码的数量。平滑过渡对于元素来说是一种模式而不是单独的事物,应该按照流星哲学来对待。