Javascript Meteor和helper的新功能不起作用

Javascript Meteor和helper的新功能不起作用,javascript,meteor,Javascript,Meteor,我正在学习meteor,我无法让我的助手函数返回一些静态文本 <head> <title>LeaderBoard</title> </head> <body> <h1>Leaderboard</h1> <p>{{player}}</p> </body> 这仅返回排行榜标题 更新: 改为: 排行榜 排行榜 {{player}} {{pla

我正在学习meteor,我无法让我的助手函数返回一些静态文本

<head>
    <title>LeaderBoard</title>
</head>

<body>
    <h1>Leaderboard</h1>

        <p>{{player}}</p>
</body>
这仅返回排行榜标题

更新: 改为: 排行榜


排行榜
{{player}}

{{player}}

JS仍然是一样的,仍然不起作用

选项1

如果你的应用程序没有多个页面/屏幕。像这样编辑你的html模板

   <head>
     <title>LeaderBoard</title>
   </head>

 <body>
     <h1>Leaderboard</h1>

    {{> leaderboard}}
  </body>
  <template name="leaderboard">
    {{player}}
  </template>

排行榜
排行榜
{{>排行榜}
{{player}}
PS:-{{player}表示模板帮助程序“player”,而{{{>排行榜}表示模板(这是handlebar语法)

选项2:您的模板应该如下所示。(假设您的应用程序有多个页面/屏幕-如果您使用某种路由器会更好)

  • 主布局页面-称之为master.html

      <head>
       <title>LeaderBoard</title>
      </head> 
    
     <body>
     </body>
    
    
    排行榜
    
  • 名为排行榜的模板。称之为leadboard.html

     <template name="leaderboard">
      {{player}}
     </template>
    
    
    {{player}}
    
  • 然后,使用您在问题中提供的相同代码创建您的助手


  • 这应该行得通

    选项1

    如果你的应用程序没有多个页面/屏幕。像这样编辑你的html模板

       <head>
         <title>LeaderBoard</title>
       </head>
    
     <body>
         <h1>Leaderboard</h1>
    
        {{> leaderboard}}
      </body>
      <template name="leaderboard">
        {{player}}
      </template>
    
    
    排行榜
    排行榜
    {{>排行榜}
    {{player}}
    
    PS:-{{player}表示模板帮助程序“player”,而{{{>排行榜}表示模板(这是handlebar语法)

    选项2:您的模板应该如下所示。(假设您的应用程序有多个页面/屏幕-如果您使用某种路由器会更好)

  • 主布局页面-称之为master.html

      <head>
       <title>LeaderBoard</title>
      </head> 
    
     <body>
     </body>
    
    
    排行榜
    
  • 名为排行榜的模板。称之为leadboard.html

     <template name="leaderboard">
      {{player}}
     </template>
    
    
    {{player}}
    
  • 然后,使用您在问题中提供的相同代码创建您的助手


  • 这应该行得通

    所以,你犯的错误很少。让我们来解构它

    什么是模板? 模板是一段呈现到DOM中的代码,可以使用帮助程序、事件等进行操作。要使用任何模板,必须存在一个模板。它们可以从软件包中放入你的应用程序,也可以由你自己制作。在这种特殊情况下,您正在寻找后者

    要定义模板,请选择任何HTML文件或创建一个新文件,并以HTML方式定义它:

    <template name="theTemplate">
      Hello, I am the template.
    </template>
    
    请注意,
    Template
    对象包含
    Template
    属性。它恰好发生在Meteor获取了您的模板定义,然后使用
    helpers
    方法(以及其他一些有用的方法)将其存储到对象中之后

    如果删除
    template
    模板定义(也称为HTML),
    template
    对象将没有
    template
    属性,并且由于您试图访问
    未定义的属性,整个过程将抛出
    类型错误

    如何将助手返回的值放入模板中? 只需使用
    {…}
    语法。比如说,您有一个helper
    coolestString
    ,您需要从中获取值,不管它是什么,并放入
    h1
    标记中:

    <template name="theTemplate">
        <h1>{{ coolestString }}</h1>
    </template>
    
    在mycolestapp.js

    if (Meteor.isClient()) {
        Template.theTemplate.helpers({
            coolestAppName: function () {
                return 'My super cool app!';
            }
        });
    }
    
    完成了

    但如果我想省略模板呢? 通常,根据定义,助手属于某个模板,因此注射的层次结构是主体,然后是模板,然后是助手。但也可以将助手直接插入到文档体中,而忽略中间模板。您可以使用
    模板执行此操作。registerHelper
    方法:

    Template.registerHelper('theHelper', function () {
        return 'I am helper'; // add some logic here and see how it works; hint: reactively.
    });
    
    然后,您只需将其放入您的文档中:

    <body>
        {{ theHelper }}
    </body>
    
    
    {{theHelper}}
    
    它被渲染到

    <body>
        I am helper
    </body>
    
    
    我是帮手
    
    Template.registerHelper
    背后的原则很简单,不要重复。有时,您需要为多个模板提供完全相同的数据,所以首先您可能认为必须复制helpers代码。但这种方法有助于避免不必要的重复


    通过这种方式,您可以使用更复杂的对象,包括更复杂的逻辑,甚至可以将Mongo集合直接放入文档中。

    因此,您很少犯错误。让我们来解构它

    什么是模板? 模板是一段呈现到DOM中的代码,可以使用帮助程序、事件等进行操作。要使用任何模板,必须存在一个模板。它们可以从软件包中放入你的应用程序,也可以由你自己制作。在这种特殊情况下,您正在寻找后者

    要定义模板,请选择任何HTML文件或创建一个新文件,并以HTML方式定义它:

    <template name="theTemplate">
      Hello, I am the template.
    </template>
    
    请注意,
    Template
    对象包含
    Template
    属性。它恰好发生在Meteor获取了您的模板定义,然后使用
    helpers
    方法(以及其他一些有用的方法)将其存储到对象中之后

    如果删除
    template
    模板定义(也称为HTML),
    template
    对象将没有
    template
    属性,并且由于您试图访问
    未定义的属性,整个过程将抛出
    类型错误

    如何将助手返回的值放入模板中? 只需使用
    {…}
    语法。比如说,您有一个helper
    coolestString
    ,您需要从中获取值,不管它是什么,并放入
    h1
    标记中:

    <template name="theTemplate">
        <h1>{{ coolestString }}</h1>
    </template>
    
    在mycolestapp.js

    if (Meteor.isClient()) {
        Template.theTemplate.helpers({
            coolestAppName: function () {
                return 'My super cool app!';
            }
        });
    }
    
    完成了

    但如果我想省略模板呢? 通常,根据定义,助手属于某个模板,因此注射的层次结构是主体,然后是模板,然后是助手。但也有可能将助手直接注入到