1

我是 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;
        }
    };

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

那么……我还能对这些问题对象产生反应吗?如果是这样,怎么做?

4

1 回答 1

1

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

但总而言之,听起来您正在使您的应用程序变得比它需要的更复杂一些。请浏览 docs.meteor.com 以获取有关如何“思考”构建反应式应用程序的想法和帮助。

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

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

于 2013-10-27T22:29:21.243 回答