【发布时间】:2015-08-23 10:24:08
【问题描述】:
我是 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;
});
}
});
【问题讨论】:
标签: javascript templates meteor callback helper