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

How can I pass global Meteor variables to templates and access and use them?

本文关键字:访问 全局 Meteor 变量      更新时间:2023-09-26

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

因此,我无法弄清楚如何将这些全局变量引入模板以便我可以使用它们。我已经在下面展示了我这样做的黑客方式,它有效,但它已被弃用。我已经阅读了文档,但找不到它在哪里清楚地说明了如何正确执行此操作。这是我得到的:

客户/账户.js

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

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

<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>

lib/globals.js

BANK_ACCOUNTS = {
    trading: 100,
    offshore: 200,
    loan: 300,
    holdingsValue: 4000,
    netWorth: 0
}

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

谢谢汤姆

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

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

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

如果你想为应用的全局变量提供一个合理且不混乱的结构,我强烈建议阅读以下文章:

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

我想这就是你要找的。