gpt4 book ai didi

重新渲染模板时的 Meteor 回调

转载 作者:行者123 更新时间:2023-12-02 02:24:11 25 4
gpt4 key购买 nike

我目前有一个模板,其中有一个 {{#each}} 循环。我试图找到一种方法来在 {{#each}} 循环完成时触发特定函数。 Template.rendered 仅在第一次渲染模板时运行,因此不幸的是,这不起作用。

有什么可以做到这一点吗?

最佳答案

这就是我要做的:

Template.foo.rendered=function(){
// NEW in 0.8.3, use this.computation=Deps.autorun and
// this.computation.stop() in destroyed callback otherwise
this.autorun(function(){
var cursor=Foo.find({/* same query you feed the #each with */});
cursor.forEach(function(foo){
// transformations on the updated model ?
// this is important to call forEach on the cursor even if you don't do
// anything with it because it actually triggers dependencies on documents
});
NEW in 0.9.1, use Deps otherwise
Tracker.afterFlush(function(){
// here you are guaranteed that any DOM modification implied by the
// each loop is finished, so you can manipulate it using jQuery
this.$(".foo-item").doStuff();
}.bind(this));
}.bind(this));
};

此代码设置了一个模板本地自动运行(当从 DOM 中删除模板时,计算自动停止),以使用与#每个参数。

每当数据库被修改时,它都会再次运行,如果您愿意,您可以迭代修改的文档。

数据库被修改,它也会使#each block 设置的计算失效,并执行DOM元素插入/修改/删除。

this.autorun 创建的模板计算中,我们不确定 DOM 操作是否已经发生,这就是为什么我们使用 Tracker.afterFlush 来运行代码DOM 再次卡住后。

如果每次 #each 失效后必须触发的代码段不使用 DOM,您可以忘记这个 Tracker.autoFlush 内容,但我认为它确实如此。

关于重新渲染模板时的 Meteor 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25041451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com