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 的方法是减少样板代码的数量。平滑过渡是一种模式,而不是元素的个别事物,应该按照流星哲学来对待。
我是 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 的方法是减少样板代码的数量。平滑过渡是一种模式,而不是元素的个别事物,应该按照流星哲学来对待。