0

我有一个功能:

function Print(string, number) {

        if (number == 1) { // For descriptions
            currentdesc = string;
        } 
        else if (number == 2) { // For the first choice
            currentchoice1 = string;
        } 
        else if (number == 3) { // For the second choice
            currentchoice2 = string;
        }
}

以及一些使用这些值在页面上显示它们的模板:

if (Meteor.isClient) {
            Template.main.desc = currentdesc;

            Template.below.choice1 = currentchoice1;

            Template.below.choice2 = currentchoice2;
}

其中的 HTML 部分是:

<template name="main">
  <h2>Current:</h2>
  {{desc}}

</template>

<template name="below">
  <h3>Choose:</h3>
  {{choice1}}
  <br/>
  {{choice2}}
  <br/>
    <div>
    <input id="number" type="text" size="40">
    <input type="button" class="choose" Value="choice">
    </div>
</template>

当我第一次调用该函数时,它会正确显示我需要的内容。之后,每当我再次调用该函数时,无论我做什么,页面上的文本都保持不变。variables currentdesc,currentchoice1并按currentchoice2预期进行相应更改,但模板不会更新。

4

2 回答 2

0

我是 Meteor 的新手,但我认为您需要设置一个模板助手。

Template.below.helpers ({
  choice1: function () {
    return currentchoice1;
   }
}),

这使得choice1 具有反应性。

鲍勃

于 2013-06-22T12:56:57.727 回答
0

用于Session使变量反应:

function Print(string, number) {

    if (number == 1) { // For descriptions
        Session.set('currentdesc', string);
    } 
    else if (number == 2) { // For the first choice
        Session.set('currentchoice1', string);
    } 
    else if (number == 3) { // For the second choice
        Session.set('currentchoice2', string);
    }
}

还有你的模板:

if (Meteor.isClient) {
        Template.main.desc = function() {
            return Session.get('currentdesc');
        }
        Template.below.choice1 = function() {
            return Session.get('currentchoice1');
        }
        Template.below.choice2 = function() { 
            return Session.get('currentchoice2');
        }
}

还有一些关于如何使用SessionMeteor 文档的示例:http: //docs.meteor.com/#session

于 2013-06-22T15:18:09.847 回答