- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 meteor ,我无法让我的辅助函数返回一些静态文本。
<head>
<title>LeaderBoard</title>
</head>
<body>
<h1>Leaderboard</h1>
<p>{{player}}</p>
</body>
在 JS 中
if(Meteor.isClient){
Template.leaderboard.helpers({
player: function(){
return "text";
}
});
}
这只返回排行榜标题
更新:变成: 排行榜
<body>
<h1>Leaderboard</h1>
<p>{{player}}</p>
</body>
<template name="leaderboard">
{{player}}
</template>
和JS还是一样,还是不行
最佳答案
所以,你犯的错误很少。让我们解构它。
模板是呈现到 DOM 中的一段代码,可以使用助手、事件等进行操作。要使用任何模板,必须存在一个模板。它们既可以从包中放入您的应用程序中,也可以由您自己制作。在这种特殊情况下,您正在寻找后者。
要定义模板,选择任何 HTML 文件或创建一个新文件并以 HTML 方式定义它:
<template name="theTemplate">
Hello, I am the template.
</template>
现在您可以使用以下语法将此模板注入(inject) DOM 中您想要的任何位置:
<body>
<h1>My super app</h1>
<div>{{> theTemplate}}</div>
</body>
它将渲染成
<body>
<h1>My super app</h1>
<div>
Hello, I am the template.
</div>
</body>
或者,事实上,一些更丑陋的东西,因为 Meteor 保留了所有的缩进和东西。
您说得对,您需要 helper 。助手是一个函数,它返回一个按原样注入(inject)的对象(可以是字符串、数字等),就好像它是 document.write
d。
任何模板的助手都是这样定义的:
Template.theTemplate.helpers({
coolestString: function () {
return 'I am the coolest string put by a helper.';
}
});
请注意,Template
对象包含 theTemplate
属性。它恰好发生在 Meteor 获取您的模板定义,然后使用 helpers
方法(以及其他一些有用的方法)将其存储到一个对象中之后。
如果删除 theTemplate
模板定义(又名 HTML),Template
对象将没有其 theTemplate
属性,整个事情将抛出 TypeError
,因为您尝试访问 undefined
的属性。
只需使用 {{ ... }}
语法。比如说,你有一个助手 coolestString
,你需要从它获取值,不管它是什么,然后放入 h1
标签中:
<template name="theTemplate">
<h1>{{ coolestString }}</h1>
</template>
注意 {{> ...}}
和 {{ ...}}
之间的区别。前者注入(inject)一个模板,后者从当前上下文中注入(inject)一个值;模板的助手保留在它的根上下文中(或者如果您还不了解上下文就忘记它)。
总结一下
{{ ... }}
语法在模板中访问助手的值。{{> ...}}
语法将模板插入到您的文档中。就是这样。
在myCoolestApp.html
中,
<body>
{{> theTemplate}}
</body>
<template name="theTemplate">
{{ coolestAppName }}
</template>
在 myCoolestApp.js
中,
if (Meteor.isClient()) {
Template.theTemplate.helpers({
coolestAppName: function () {
return 'My super cool app!';
}
});
}
完成!
一般来说,helper 根据定义属于某个模板,所以注入(inject)的层次结构是主体,然后是模板,然后是 helper。但是可以将助手直接注入(inject)文档主体并省略中间模板。您可以使用 Template.registerHelper
方法这样做:
Template.registerHelper('theHelper', function () {
return 'I am helper'; // add some logic here and see how it works; hint: reactively.
});
然后您要做的就是将其放入您的文档中:
<body>
{{ theHelper }}
</body>
渲染到
<body>
I am helper
</body>
Template.registerHelper
背后的原理是 DRY,不要重复自己。有时您需要向多个模板提供完全相同的数据,所以一开始您会认为您必须复制帮助程序代码。但这种方法有助于避免不必要的重复。
您可以使用更复杂的对象,通过这种方式覆盖更复杂的逻辑,或者您甚至可以直接将 Mongo 集合放入文档中。
关于javascript - Meteor 的新功能和辅助功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826889/
我正在尝试 specFlow 辅助,但不确定如何从表中创建类属性。 想象一下我有这门课: public class Tracking { public string Category { ge
我如何使用带 IOS 应用程序的辅助 GPS 来计算给定区域(例如建筑物)内部(或外部)某人的位置? 是否有可能在几英尺内就足够准确? 这样做正确吗? 是否可以在计算中使用多个 wifi 连接? 最佳
我在 wiki 和其他一些文本中看到,他们说冒泡排序、插入排序、选择排序等的空间复杂度是 O(1) 辅助。它们是否指的是程序中使用的变量所需的常量存储单元。 最佳答案 是的,他们指的是大多数排序都是就
默认情况下,页面上有 3 个点击事件(蓝色 X、蓝色 +、灰色 X)。每个人都会打开一个模式框。 每个模式框都有一个按钮。其中两个模态框,一个用于蓝色 X,一个用于蓝色 +,内部都有功能按钮。当我单击
我正在寻找 Kotlin 的 gigasecond 练习的解决方案:http://exercism.io/exercises/kotlin/gigasecond/readme 。我可以理解它如何需要两
我基本上刚刚开始使用 PyGame 进行开发,但我在整个 Sprite 概念方面遇到了麻烦。我一直在到处寻找有关如何使用它的指南,但似乎找不到任何指南。我想知道这一切是如何运作的基本概念。这是我一直在
我有一些无法运行的 JavaScript 代码。我尝试过移动一些东西,并更改一些关键字,但到目前为止没有任何效果。我会让你们尝试一下。 这是 JavaScript 文件: var GAME =
我有这个注册网页是我在帮助下创建的,感谢这里的人。在尝试使其响应之前,我只是做了一些调整。如何在复选框及其文本和底部的 div 之间创建空间而没有间隙。有什么建议吗? https://jsfiddle
我正在尝试检查是否启用了 WiFi 辅助。当我连接到我的接入点以获取一些数据时,我遇到了问题,当我的连接不佳时,我的蜂窝数据被使用并且它干扰了我的接入点。有什么方法可以检查是否启用了此选项? 最佳答案
为了安全起见,我希望使用异地复制/辅助 Blob 存储容器作为 AzureML 数据存储的数据源。所以我执行以下操作: 新数据存储 输入名称 + Azure Blob 存储 + 手动输入 对于 URL
我的讲师现在有一个我以前从未见过的奇怪习惯,我想知道这是 Haskell 标准还是他的编程风格的怪癖。 基本上,他经常会做这样的事情: functionEx :: String -> Int func
我想从可移动SD卡中删除文件,我尝试了很多方法但没有效果。 尝试过: file.delete(); 和 File file = new File(selectedFilePath); boolean
我正在开发一款 Android 应用,用户必须能够在其中进行身份验证,然后调用 YouTube 数据 API。 我可以毫无问题地使用主帐户对用户进行身份验证,使用 Google 登录对我和用户来说一切
命令: sudo mv /temp/hello.txt /path/to/destination/ 然后我通过 key 存储添加了密码。 我确信写在 sudo.password 中的密码是正确的。
我需要编写一个 java 代码来获取给定集群的辅助名称节点的 IP 地址。给定集群的 Namenode 的 IP 地址。 我能够获取数据节点和名称节点的报告,但无法找到获取辅助名称节点的 IP 地址的
Cay Horstmann 的书《不耐烦的 Scala》中的一个非常简单的练习一直让我感到困惑。是关于primary , auxiliary和 default primary构造函数: ex 5.10
我正在尝试确定 Google Cloud DNS 是否支持通过 NOTIFY 请求进行辅助 DNS (AXFR/IXFR) 传输?我在网上找不到任何东西,Google 也没有明确声明不支持它。 最佳答
我有一个简单的 Kotlin 类: data class ValveSpan(val begin:Duration, val end:Duration, val key:String):Compara
我有一个与最初在 UISplitView 中加载辅助 View 相关的快速问题。目前,我已经在 masterVC.swift 中获得了代码,可以用数组中的第一个对象(如果有)填充detailsVC。这
我正在使用这个命令来获取另一个命令的进程 ID: ps aux | grep 7000.conf | awk '{print $2}' 这将返回两个 PID: 7731 22125 我只想要第一个。第
我是一名优秀的程序员,十分优秀!