- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
好吧,我的问题很基本。我使用 Node.js 和 Underscore 作为注册模板引擎,使用 Expressjs 框架。我正在尝试创建部分内容。我希望能够做一些像您使用其他语言所做的事情:
<% include('header') %>
<body id="content">
<span>Blah</span>
</body>
<% include('footer') %>
你明白了。那么,有谁知道在 Node 上使用下划线来实现这一点的方法吗?
<%
var isReturned = false;
var isSuccess = false;
if(typeof user != 'undefined'){
var isReturned = true;
}
if(typeof errors == 'undefined'){
var errors = null;
}
if(typeof success != 'undefined'){
isSuccess = true;
}
%>
<% _.template('header') %>
<h1><%= title %></h1>
<% if(isSuccess){ %>
<div style="background-color: green; border: 1px solid black; color: white; width: auto; display: inline-block; padding: 0.5em; border-radius: 5px;">You have successfully registered! <a href="/login">Click Here</a> to login.</div>
<% } %>
<form id="register" name="register" action="/register" method="POST">
<table>
<tr>
<td>
<label for="firstName">First Name:</label>
</td>
<td>
<input type="text" size=15 name="firstName" value="<% if(isReturned){ %> <%= user.firstName %> <% } %>"/>
</td>
<% if(errors != null && typeof errors.firstName !== 'undefined' && errors.firstName !== null){ %>
<td class="error"><%= errors.firstName.msg %></td>
<% } %>
</tr>
<tr>
<td>
<label for="lastName">Last Name:</label>
</td>
<td>
<input type="text" size=15 name="lastName" value="<% if(isReturned){ %> <%= user.lastName %> <% } %>"/>
</td>
<% if(errors != null && typeof errors.lastName !== 'undefined' && errors.lastName !== null){ %>
<td class="error"><%= errors.lastName.msg %></td>
<% } %>
</tr>
<tr>
<td>
<label for="email">E-mail:</label>
</td>
<td>
<input type="text" size=15 name="email" value="<% if(isReturned){ %> <%= user.email %> <% } %>"/>
</td>
<% if(errors != null && typeof errors.email !== 'undefined' && errors.email !== null){ %>
<td class="error"><%= errors.email.msg %></td>
<% } %>
</tr>
<tr>
<td>
<label for="password">Password:</label>
</td>
<td>
<input type="password" size=15 name="password"/>
</td>
<% if(errors != null && typeof errors.password !== 'undefined' && errors.password !== null){ %>
<td class="error"><%= errors.password.msg %></td>
<% } %>
</tr>
<tr>
<td>
<label for="confirm">Confirm Password:</label>
</td>
<td>
<input type="password" size=15 name="confirm"/>
</td>
<% if(errors != null && typeof errors.confirm !== 'undefined' && errors.confirm !== null){ %>
<td class="error"><%= errors.confirm.msg %></td>
<% } %>
</tr>
<tr>
<td colspan=2>
<input type="submit" size=15 name="submit" value="Register"/>
</td>
</tr>
</table>
</form>
<% _.template('footer') %>
这是我在收到评论后尝试的方法(我没有指定特定的网址,因为expressjs连接了一个 View 目录,并且仅指定模板的名称适用于项目的所有其他部分)。它现在只是无法解析页眉和页脚模板。
最佳答案
虽然 underscore.js 的模板引擎非常基础,但该模板可以执行任意 JavaScript 代码,这一事实使您可以执行几乎任何操作。
我设置了这个小辅助函数来渲染基于带有 id 的脚本 block 的模板:
_.include = function(id, data) {
var template = document.getElementById(id).innerHTML;
return _.template(template)(data);
}
HTML 和模板的组合:
<script type="text/html" id='header'>
This is the header
</script>
<script type="text/html" id='footer'>
This is the footer
</script>
<script type="text/html" id='full'>
<%= _.include('header') %>
<h1><%= title %></h1>
<%= _.include('footer') %>
</script>
<div id='target'>
This text will be replaced by the output of rendering the templates
</div>
有了这些,渲染模板、页眉和页脚就这么简单:
document.getElementById('target').innerHTML = _.include('full', { "title": "Title"});
请注意,我尚未将任何内容传递到模板中的 _include
调用中。您可能可以传递您获得的参数(我只是还没有查找上下文变量的名称),或者您可以显式传递一个带有页眉和页脚需要的新对象:
<%= _.include('header', { 'title': title }) %>
可以在此处找到包含代码和 HTML 的 fiddle :http://jsfiddle.net/tUzcU/2/
关于Node.js 和 underscore.js -- 模板化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043744/
如何检查underscore.js中数组中的元素是否存在?例如,我有['aaa', 'bbb', 'cfp', 'ddd'],并想检查'cfp'是否存在。如果可以,我想显示一些文本。我的以下代码无法正
我有一个 array = [1,2,3,4,5]并想使用 underscore.js 获得累积和数组. 我想要的结果是: [1,3,6,10,15] 我想要数组而不是累积总和 15 作为值。任何帮助,
我正在使用 underscore.js的模板库,我不确定如何在模板中使用逻辑。例如,我想在模板中打印一组标签。最好的方法是什么? Javascript: bunny_data = { name:
我正在尝试将我的对象数组格式化为一个数组以供组件使用。我需要将对象的确切值映射到正确的位置。 例如 我的原始数据: var rawData = [ { name: 'j
我有一个带有键的对象 var obj = { a: { fruit: 'Apple' }, b: { fruit: 'Banana' } } 我想快速将键 (a/b) 移动到作为属性 name 的值
我有一个像这样的 json 数组: myArray=[{ a:1, b:[{c:"x",d:"y"}, {c:"r", d:"s"}...] },
可以说我有这个对象数组。 var initialData = [{Title:"Hat",Price:49.95}, {Title:"Pants",Price:7
在使用 _.findWhere 函数时,我无法弄清楚如何在 underscore.js 中动态设置属性。 这是该函数的文档: findWhere_.findWhere(list, properties
我正在将一个相当大的 php 模板(其中包含基本逻辑的页面)转换为一个 underscore.js 模板。 问题是我一直有错误,并且它是缩小的“编译”版本在抛出错误时没有提供有用的信息或行号。 有没有
在 PHP 中,特别是在 Wordpress 中,__('string') 和 _x('string') 有什么区别? 我正在阅读 Wordpress 文档并感到困惑。以下混淆的好例子来自 Wordp
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭3年前。 社区在上个月审核了是
如何在 underscore.js 中查询日期?我知道我不能做“之间”子句,但请参阅下面的代码作为示例。我的目标是根据用户指定的日期范围将 JSON 数据加载到图表中。 var testdata=[{
$.each(asList(1, 2, 3), new Block() { public void apply(Integer item) { System.out.print
我遇到了在线文档与我在程序中看到的在 GO 代码中访问 C 结构的行为之间的脱节。 go version 说我正在使用: go version go1.4.2 linux/amd64 根据GO CGO
我正在浏览Underscore.js api我注意到 _.escape逃脱& , , " , ' , 和 /字符。让我吃惊的是逃跑/ . 有没有逃避的理由/我不知道的字符? 最佳答案 编辑 : 好吧
我想发送带有几个下划线的字符串 "__hello__its_me_"但 Discord 将其解释为 Markdown 并在我的字符串下划线或斜体。 我知道我必须用反斜杠转义下划线,但在 Visual
我有一个连接到 Visual Studio Online 的 Azure 网站。连接两者时,Visual Studio Online 会在托管构建 Controller 上创建一个持续交付构建运行。此
当我尝试呈现以下模板时,在运行时出现编译错误: Title: Author:
我发现自己经常使用以下模式 var line = "12|John Doe" var pieces = line.split("|") var user = { id : pieces[0],
我正在尝试在主干中使用带下划线的 Handlebars 样式模板(与require.js一起使用)。 我有以下几点: _.templateSettings.interpolate = /\{\{(.+
我是一名优秀的程序员,十分优秀!