【问题标题】:In Meteor, how to find which session variable triggers a template rerun在 Meteor 中,如何找到哪个会话变量触发了模板重新运行
【发布时间】:2014-07-29 08:25:17
【问题描述】:

这是一个关于设计流星应用程序或调试流星应用程序的一般问题。

当我编写流星应用程序时,我通常会更新会话变量值以触发重新运行模板帮助函数和/或重新渲染模板。所以我的应用程序有很多不同的会话变量。

有时我发现辅助函数会重新运行多次,但我想不出它为什么会重新运行这么多次。一定是某个会话变量被更新并导致重新运行。有没有办法找出导致它的会话变量?

一般的问题是:在响应式设计中,当我看到一个模板被重新渲染时,如何找到它被重新渲染的原因?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    您可以使用 Deps.autorun 快速找出它是什么,如果您想快速调试它,这是一种非常简单的方法

    像这样放入代码

    Deps.autorun(function() {
       Session.get("something");
       console.log("Session something has changed");
    });
    
    Deps.autorun(function() {
       Meteor.user()
       console.log("Meteor user has changed");
    });
    

    您可以在客户端放置这样的代码块,以查看哪些发生了变化。每个都会运行一次,最初,然后每次它内部的反应变量发生变化。

    您必须为您在模板中使用的每个变量执行此操作,这将帮助您找出哪些正在发生变化,每个 Deps.autorun 块只有在其中的变量发生变化时才会独立运行。

    【讨论】:

    • 是的。它告诉我一个会话变量已更改。但它并没有告诉我它在哪里改变。有没有办法弄清楚它在哪里改变?谢谢。
    • @Fei 你在代码中的意思是什么?您将不得不使用 Chrome 的 webkit 调试器,将断点添加到您使用某些东西来更改反应性变量的任何位置,然后运行您的代码。这是一个很好的教程:chromedevtools.googlecode.com/svn-history/r421/trunk/tutorials/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2014-10-19
    • 2014-07-03
    相关资源
    最近更新 更多