Meteor - 被动更新未渲染的数据

Meteor - Reactively Updating Non-Rendered Data

本文关键字:数据 被动 更新 Meteor      更新时间:2023-09-26

我是Meteor的新手,我正在尝试弄清楚它的响应式模型对于我正在尝试做的事情是否灵活。 我正在制作的应用程序是学习辅助工具,它基本上会反复询问用户并跟踪每个问题的分数。 这些问题是一个 Mongo 集合,我希望客户端在用户回答问题时随时更新数据库 - 也就是说,当问题的"分数"属性发生变化时。 但是,我不是在渲染乐谱。

更糟糕的是,我正在呈现这个问题,但我不是将其作为模板属性来做 - 我正在将一个调用 JS 函数的模板属性中的模板内容拼凑在一起。

Template.bottomText.explainText = function(){
        var page=getPage();
        switch(page){
            case "main":        
                return "Foo text "+question.query+"?";
            case "correct":
                return "You got the question right!  Score "+question.score;
        }
    };

我的应用程序不是我见过的典型单屏流星程序。 它具有屏幕上各种框的基本模板部分,但这些框的内容是在JS中构建的,以包含各个视图。 因此,每个单独的视图都没有自己的模板标签,因此,屏幕上的问题和分数是 JS 的产物,而不是直接模板化。 我试图让 JS 调用一个模板来激发反应性,但我似乎无法渲染它们。 当 JS 中指定的模板的输出从 JS 返回时,它将作为文本返回,而不是通过模板引擎运行。 因此,没有模板直接将这些问题作为模板属性访问 - 呈现它们的视图是在 JS 中动态拼凑在一起的一个模板属性。

所以。。。我还能对这些问题对象做出反应吗? 如果是这样,如何?

首先要做的是.. 您可能想查看车把助手 {{#isolate}} ,这将允许您控制每次反应更新渲染哪些模板元素。

但总的来说,听起来你正在使你的应用程序比它需要的更复杂一些。请浏览 docs.meteor.com 以获取有关如何"考虑"构建响应式应用程序的想法和帮助。

不清楚你想从你的问题中完成什么,或者你的问题是什么。您担心部分屏幕重新渲染吗?或者您是否担心在允许用户查看分数之前对用户隐藏分数?

如果是这种情况,那么您可能希望使用发布/订阅模型;当确定客户端已准备好查看所需数据时,您将让客户端订阅所需的数据;通过使用 meteor Session 变量最容易完成。