Javascript Meteor和helper的新功能不起作用
我正在学习meteor,我无法让我的助手函数返回一些静态文本Javascript Meteor和helper的新功能不起作用,javascript,meteor,Javascript,Meteor,我正在学习meteor,我无法让我的助手函数返回一些静态文本 <head> <title>LeaderBoard</title> </head> <body> <h1>Leaderboard</h1> <p>{{player}}</p> </body> 这仅返回排行榜标题 更新: 改为: 排行榜 排行榜 {{player}} {{pla
<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:您的模板应该如下所示。(假设您的应用程序有多个页面/屏幕-如果您使用某种路由器会更好)
<head>
<title>LeaderBoard</title>
</head>
<body>
</body>
排行榜
<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:您的模板应该如下所示。(假设您的应用程序有多个页面/屏幕-如果您使用某种路由器会更好)
<head>
<title>LeaderBoard</title>
</head>
<body>
</body>
排行榜
<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
属性,并且由于您试图访问未定义的属性,整个过程将抛出类型错误
如何将助手返回的值放入模板中?
只需使用{…}
语法。比如说,您有一个helpercoolestString
,您需要从中获取值,不管它是什么,并放入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
属性,并且由于您试图访问未定义的属性,整个过程将抛出类型错误
如何将助手返回的值放入模板中?
只需使用{…}
语法。比如说,您有一个helpercoolestString
,您需要从中获取值,不管它是什么,并放入h1
标记中:
<template name="theTemplate">
<h1>{{ coolestString }}</h1>
</template>
在mycolestapp.js
中
if (Meteor.isClient()) {
Template.theTemplate.helpers({
coolestAppName: function () {
return 'My super cool app!';
}
});
}
完成了
但如果我想省略模板呢?
通常,根据定义,助手属于某个模板,因此注射的层次结构是主体,然后是模板,然后是助手。但也有可能将助手直接注入到