在@key
下面总是给0 1 2 3
甚至在第二排.请帮忙.
把手模板:
{{#grouped_each 4 orderData}}
<div class="row">
{{#each this }}
<div class="col-md-3">
<div class="thumbnail">
<img src="{{getImageSourceChannel ../../channelNames @key name}}" class="">
<div class="caption">
<p><b>{{getObjectAtIndex ../../channelNames @key}}</b></p>
<p class="">{{slices.4.count}} new orders</p>
<p class="">{{slices.3.count}} back orders</p>
</div>
</div>
</div>
{{/each}}
</div>
{{/grouped_each}}
Run Code Online (Sandbox Code Playgroud)
把手部分:
Handlebars.registerHelper('grouped_each', function(every, context, options) {
var out = "", subcontext = [], i;
console.log(every);
console.log(context);
console.log(options);
if (context && context.length > 0) {
for (i = 0; i < context.length; i++) {
if …
Run Code Online (Sandbox Code Playgroud) 在最新发布的EmberJS之后,v1.9.0
我试图从Handlebars转移到HTMLbars.我发现非常具有挑战性的是缺乏文档.
我正在尝试实现非常简单的帮助器.
例如,拿这个把手帮手:
<div id="main"></div>
<script type="text/x-handlebars" data-template-name="index">
{{logIt test}}
<h1>{{test}}</h1>
</script>
Run Code Online (Sandbox Code Playgroud)
App = Ember.Application.create({
rootElement: '#main'
});
App.IndexRoute = Ember.Route.extend({
setupController: function(controller){
controller.set('test', 'mytest');
}
});
Ember.Handlebars.registerHelper("logIt", function(something) {
console.log(something);
});
Run Code Online (Sandbox Code Playgroud)
Js Fiddle:http://jsfiddle.net/sisir/p463q2L8/
如何将其转换为htmlbars?
使用 Pug 过滤器和 jsTransformer-handlebars 模块,我试图将一些把手代码插入到一个将使用本地人的 pug 模板中。然而,由于 Pug 在编译时渲染过滤器,我们不能使用模板 locals。所以我想知道让 jsTransformer 在浏览器上可用是否会解决这个问题,如果是,如何打包 jsTransformer-handlebars 模块并使其在浏览器上可用。这是问题的概要(有点长,我很抱歉。我想提供大量细节以确保问题清晰):
我有以下通常用于车把的辅助函数):
//helpers.js
module.exports = {
truncate: (str, len) => {
//code
return str;
},
stripTags: input => input.replace(/<(?:.|\n)*?>/gm, ''),
formatDate: (date, format) => moment(date).format(format),
select: function (selected, options) {
return options.fn(this).replace(new RegExp(` value="${selected}"`), '$&selected="selected"').replace(new RegExp(`>${selected}</option>`), 'selected="selected"$&');
},
};
Run Code Online (Sandbox Code Playgroud)
helpers.js 在 app.js 中被导入并且函数被设置为应用程序变量。除了 select() 之外,它们都可以在 pug 中使用。
//sets application locals so I can call these functions from a pug template
app.locals = {
truncate,
stripTags,
formatDate,
select, …
Run Code Online (Sandbox Code Playgroud) 使用Handlebars.Net,我想创建一个HandlebarsHelper,它将用<br>
标签替换回车和换行符.它应该看起来像这样:
string pattern = @"/(\r\n|\n|\r)/gm";
string replacement = "<br>";
Regex rgx = new Regex(pattern);
Handlebars.RegisterHelper("link_to", (string text) =>
{
text = rgx.Replace(text, replacement);
});
Run Code Online (Sandbox Code Playgroud)
编译器(或resharper)告诉我它无法判断我是否正在尝试使用HandlebarsBlockHelper或HandlebarsHelper,而且我在任何一种情况下都缺少参数.
handlebars-loader如何与handlebars-helpers一起工作?
webpack.configs:
{ // handlebars-loader
test: /\.handlebars$/,
loader: "handlebars-loader?helperDirs[]=" + __dirname + "/helpers"
}
Run Code Online (Sandbox Code Playgroud)
但是,如何导入 handlebars-helpers 并使用 handlebars-helpers
谢谢!
我在我的项目中使用 Handlebars,并使用 webpack 捆绑模板。我正在使用handlebars-loader
编译模板。我在创建一个小助手时遇到了问题。当我在模板中使用 helper 时,Webpack 会显示此错误:
You specified knownHelpersOnly, but used the unknown helper withCurrentItem - 5:4
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
网络包:
{
test : /\.(tpl|hbs)$/,
loader : "handlebars-loader?helperDirs[]=" + __dirname + "templates/helpers"
// use : 'handlebars-loader?helperDirs[]=false' + __dirname + 'templates/helpers'
},
Run Code Online (Sandbox Code Playgroud)
助手(项目/模板/助手/withCurrentItem.js):
export default function (context, options) {
const contextWithCurrentItem = context
contextWithCurrentItem.currentItem = options.hash.currentItem
return options.fn(contextWithCurrentItem)
}
Run Code Online (Sandbox Code Playgroud)
模板文件(project/templates/products.tpl):
{{> partials/filters}}
<ul class="u-4-5">
{{#each data.products}}
{{> partials/product}}
{{withCurrentItem ../styles currentItem=this}}
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题并在互联网上搜索,但我找不到任何东西。这是我尝试过的:
将helperDirs[]
查询参数添加到加载器:
loader : "handlebars-loader?helperDirs[]=" …
我们正在创建一个 HTML 电子邮件模板,该模板需要根据 JSON 数据中的属性之一的值有条件地呈现标记。我们发现以下示例,您可以创建自定义 Handlebar Helpers 来完成此操作,但在使用这些助手时,AWS SES 拒绝发送电子邮件。
这是我们正在尝试的示例:
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js">
</script>
<script type="text/x-handlebars-template">
Handlebars.registerHelper("equals", function(string1 ,string2, options) {
if (string1 === string2) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
</script>
{{#equals network "Telkom" }}
<p>This is Telkom {{network}}</p>
{{else}}
This is Not Telkom {{network}}
{{/equals}}
Run Code Online (Sandbox Code Playgroud)
我们在以下帖子中找到了这个实现: 把手 if/else 语句中的逻辑?
我们还做了一些调查,并在 AWS 论坛上发现了这个讨论,该讨论似乎声称 SES 不支持自定义车把助手 https://forums.aws.amazon.com/thread.jspa?messageID=983645
有谁知道这是否可能,如果不可能,当我们使用 SES 发送电子邮件时,是否有另一种方法有条件地呈现所需的标记?
amazon-web-services amazon-ses handlebars.js handlebarshelper
我两天前对节点和车把都是全新的,所以请耐心等待.我试图使用自定义车把助手,但我不完全确定在哪里放.
我一直得到"TypeError:Handlebars.registerHelper不是一个函数"
现在我把它放在我的server.js文件中.不确定这是否正确.
var express = require('express');
var app = express();
var Handlebars = require('express-handlebars');
app.engine('handlebars', Handlebars({
defaultLayout: 'main'
}));
app.set('view engine', 'handlebars');
Handlebars.registerHelper("if", function(conditional, options) {
if (options.hash.desired === options.hash.type) {
options.fn(this);
} else {
options.inverse(this);
}
});
Run Code Online (Sandbox Code Playgroud) HandlebarsJS 不支持字符串相等('=='),所以我必须编写自己的助手,但这个答案不清楚:
Handlebars.registerHelper('if_eq', function(a, b, opts) {
if(a == b) // Or === depending on your needs
return opts.fn(this);
else
return opts.inverse(this);
});
Run Code Online (Sandbox Code Playgroud)
然后调整您的模板:
{{#if_eq this "some message"}}
...
{{else}}
...
{{/if_eq}}
Run Code Online (Sandbox Code Playgroud)
1)他为什么做{{#if_eq ..}}
而不是{{#if if_eq .. }}
?
2)我还需要做ELSE-IF,这是自 Handlebars 3.0.0(我有 4.0)以来支持的。但是使用他的符号,我将无法做到{{#elseif_eq}}
没有这样的表达。我将如何使用此自定义帮助程序实现 ELSE-IF?
我尝试编写一个 Handlebar.Net 助手,其工作方式类似于 Equals。\n助手应该像这样使用
\n\n{{#eq name "Foo"}}\n true\n{{else}}\n false\n{{/eq}}\n
Run Code Online (Sandbox Code Playgroud)\n\n但我不知道如何实现这个助手。JS中有这样的示例,但我无法\xc2\xb4t 找到 C# 的示例。
\n\n我的第一枪是:
\n\nHandlebars.RegisterHelper("#eq", (output, context, data) =>\n{\n if (data.Length != 2)\n output.WriteSafeString("false");\n\n output.WriteSafeString(data[0].Equals(data[1]));\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n但这只是将 True 或 False 写入我的文件中。
\nhandlebarshelper ×10
c# ×2
javascript ×2
amazon-ses ×1
ember.js ×1
express ×1
helper ×1
htmlbars ×1
loops ×1
node.js ×1
pug ×1
templates ×1
webpack ×1