MeteorJS:更新模板助手后的回调

MeteorJS: Callback after template helper was updated

我是 Meteor.js 的新手,所以希望这是我的无能,而不是平台的限制,否则它会非常棒。

我想要实现的目标非常简单:运行 Javascript 每当模板助手更新新数据时(但不是来自数据库!)。

一个简单的示例场景可能是这样的:用户请求获取一些图像。但不仅仅是图像 "popping up",它们应该在完全加载后隐藏并淡入淡出(以及定位它们等)。

换句话说,在助手接收到新数据后,函数应该运行对该数据做一些事情(在实际呈现之前不能在服务器上完成)。

如果数据来自集合,通过订阅回调很容易实现。

但是,一旦 helper 渲染了新数据,似乎就没有回调了。

是的,可以添加几毫秒的超时,但在我看来这不是一个干净或可靠的解决方案,因为您显然永远不知道它需要渲染多长时间。

我搜索了数十个看似相关的帖子,但没有找到任何可以被视为实现此目的的 "standard" 方法...

这里有一些(简化的)示例代码来说明该场景:

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;

        });
    }
});

有一个待定功能,用于添加 animation/transition 对 UI 更改的支持 (referenced here)

作为临时解决方案,您可以使用 Blaze UI 挂钩。有很多包使用它们。示例 here and here

总的来说,Meteor 的方法是减少样板代码的数量。平滑过渡是一种模式,而不是元素的个别事物,应该按照流星哲学来对待。