如何将全局Meteor变量传递给模板并访问和使用它们?

时间:2016-03-19 12:10:11

标签: javascript meteor

我正在制作一款模拟股票市场的小型SPA游戏。有很多变量会影响价格和行为,但最终核心是一组有限的变量,适用于游戏的所有工作。这就是为什么我想在全球范围内存储这些值。

所以,我无法弄清楚如何将这些全局变量带入模板,以便我可以使用它们。我已经展示了下面我正在做的hacky方式,但它已被弃用了。我已阅读文档,但无法找到明确如何正确执行此操作的位置。这就是我所拥有的:

的客户机/ accounts.js

>> C = [num2cell(displayop{1}) num2cell(displayop{2}) num2cell(displayop{3}) displayop{4}]
C = 
    [01-Mar-2016]    [ 1]    [0.0497]    '11'
    [02-Mar-2016]    [ 2]    [0.9027]    '12'
    [03-Mar-2016]    [ 3]    [0.9448]    '13'
    [04-Mar-2016]    [ 4]    [0.4909]    '14'
    [05-Mar-2016]    [ 5]    [0.4893]    '15'
    [06-Mar-2016]    [ 6]    [0.3377]    '16'
    [07-Mar-2016]    [ 7]    [0.9001]    '17'
    [08-Mar-2016]    [ 8]    [0.3692]    '18'
    [09-Mar-2016]    [ 9]    [0.1112]    '19'
    [10-Mar-2016]    [10]    [0.7803]    '20'

client / rogue.html (这是基本HTML页面)

if (Meteor.isClient) {

  Template.bankAccounts.BANK_ACCOUNTS = function(){
    return BANK_ACCOUNTS;
  }

}

LIB / globals.js

<head>
  <title>rogue</title>
</head>

<body>
  <h1>Rogue</h1>
  {{ > bankAccounts }}
</body>

<template name="bankAccounts">
  <p>Trading Account: {{ BANK_ACCOUNTS.trading }}</p>
  <p>Loan Account: {{ BANK_ACCOUNTS.offshore }}</p>
  <p>Offshore Account: {{ BANK_ACCOUNTS.loan }}</p>
  <p>Total Holdings: {{ BANK_ACCOUNTS.holdingsValue }}</p>
  <p>Net Worth: {{ BANK_ACCOUNTS.netWorth }}</p>
  <button>Sleep</button>
</template>

此外,一旦他们正确加载,使用按钮点击事件时访问它们的语法是什么?任何帮助表示赞赏!

由于 汤姆

2 个答案:

答案 0 :(得分:1)

只需创建一个全局助手来配合您的全局变量:

Template.registerHelper('BANK_ACCOUNTS',function(){
  return BANK_ACCOUNTS;
});

然后您可以在任何模板中使用{{BANK_ACCOUNTS.key}}

答案 1 :(得分:0)

如果您想为应用程序的全局变量提供合理且非杂乱的结构,我强烈建议您阅读以下文章:

https://themeteorchef.com/snippets/making-use-of-settings-json/

我想这就是你要找的东西。