gpt4 book ai didi

javascript - 在 Meteor 中重绘模板期间加载消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:06 25 4
gpt4 key购买 nike

我构建了我的第一个 Meteor 应用程序并且我喜欢它。除了,现在它里面有真实的生产数据,它有点慢。我收到报告说“单击此按钮时没有任何反应”。

有没有什么方法可以在模板重绘期间显示加载消息,以便用户知道发生了什么事?

为了进一步说明,请查看此模板(不是我的实际代码,只是为了简单起见):

Template.all_posts.posts = function() {
return Posts.find({'category_id': Session.get('current_category')});
}

因此,如果打开我的控制台并运行 Session.set('current_category', 1),假设运行计算和重绘模板需要 2 秒。我希望在那 2 秒期间显示一个加载指示器。

明确地说,我已经知道如何显示加载指示器。事实上,我已经在初始页面加载时执行此操作,并在我的所有订阅 ready() 时隐藏它。我只是想知道在哪里应用相同的逻辑(显示和隐藏加载图标),以便每次重绘模板时都会发生。伪代码可以正常工作:

总之,当Meteor忙的时候,我想反射(reflect)一下。

非常感谢任何帮助!

编辑 10/09/13:

来自文档...

These Meteor functions run your code as a reactive computation:

  • Templates
  • Meteor.render and Meteor.renderList
  • Deps.autorun

我认为一种可能的解决方案是开始在这些“计算”中的任何一个无效时显示一个加载指示器。

例如,如果您的代码在 Deps.autorun 中运行,计算实例将作为第一个参数传递,您可以将回调传递给它的 onInvalidate 方法,像这样:

Deps.autorun(function(computation) {

// do reactive stuff

computation.onInvalidate(function() {
// display loading indicator
});
});

但是,据我所知,您无法访问那些其他 Meteor 方法中的计算对象,只能访问 Deps.autorun

就隐藏加载指示器而言,我认为最好的办法是在要(重新)渲染的最后一个模板的rendered 回调中执行此操作导致计算无效。

有人对此有任何见解、建议、技巧、技巧等吗?

最佳答案

您可以使用 Template.myTemplate.created = function ( ) { ... },如 meteor documentation 中所述.您可以在创建模板时运行一些 jQuery,并向主体添加加载类,然后在 Template.myTemplate.rendered 上删除加载类?

关于javascript - 在 Meteor 中重绘模板期间加载消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254929/

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