Meteor - 反应性更新非渲染数据

时间:2013-10-27 03:44:22

标签: javascript mongodb templates meteor

我是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中动态拼接在一起。

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

1 个答案:

答案 0 :(得分:1)

首先要做的事情......你可能想要查看车把助手{{#isolate}} ,这样你就可以控制每个被动更新呈现的模板元素。

但总的来说,这听起来像是让你的应用程序变得比它需要的更复杂。请浏览docs.meteor.com,了解如何“思考”构建反应性应用程序的想法和帮助。

不清楚你要从你的问题中完成什么或者你的问题是什么。您是否担心屏幕重新渲染的部分?或者你是否担心隐藏用户的分数,直到你允许他们看到分数?

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

相关问题