Javascript 带有requirejs的handlebarjs块辅助函数(要添加到数组每行上的简单奇偶属性)
我在我的requirejs主干应用程序中包括handlebarjs,我想在模板上实现行类助手定义(奇数|偶数) 我正在尝试将本机handlebar助手“移植”到基于模块的(requirejs): 使用适用于requirejs的handlebarjs插件: 这是我到目前为止得到的一个oddevenhelper.js:Javascript 带有requirejs的handlebarjs块辅助函数(要添加到数组每行上的简单奇偶属性),javascript,backbone.js,requirejs,handlebars.js,javascript-framework,Javascript,Backbone.js,Requirejs,Handlebars.js,Javascript Framework,我在我的requirejs主干应用程序中包括handlebarjs,我想在模板上实现行类助手定义(奇数|偶数) 我正在尝试将本机handlebar助手“移植”到基于模块的(requirejs): 使用适用于requirejs的handlebarjs插件: 这是我到目前为止得到的一个oddevenhelper.js: define(['handlebars'], function ( Handlebars ){ function oddevenhelper(array, even, odd
define(['handlebars'], function ( Handlebars ){
function oddevenhelper(array, even, odd, fn, elseFn) {
if (array && array.length > 0) {
var buffer = "";
for (var i = 0, j = array.length; i < j; i++) {
var item = array[i];
// we'll just put the appropriate stripe class name onto the item for now
item.stripeClass = (i % 2 == 0 ? even : odd);
// show the inside of the block
buffer += fn(item);
}
// return the finished buffer
return buffer;
} else {
return elseFn();
}
};
Handlebars.registerHelper( 'oddevenhelper', oddevenhelper );
return oddevenhelper;
});
define(['handlebar'],函数(handlebar){
函数oddevenhelper(数组、偶数、奇数、fn、elseFn){
if(array&&array.length>0){
var buffer=“”;
对于(var i=0,j=array.length;i
这是我的示例模板:
<div class="orderssummary-list">
{{#oddevenhelper orderssummary "even" "odd"}}
<div class="ordersummary-list-item {{stripeClass}}">
<a class="addone"><i class="icon-chevron-up icon-white"></i></a>
<a class="minusone"><i class="icon-chevron-down icon-white"></i></a>
<div class="item-quantity">{{quantity}}x</div><div class="item-name">{{item_name}}</div> {{total}}
<div class="clearfix">
</div>
{{/oddevenhelper}}
</div>
{{{#oddevenhelper orderssummary“偶数”“奇数”}
{{quantity}}x{{item_name}}{{total}
{{/oddevenhelper}
helper运行,但handlebar在第3个或第4个参数上抛出了错误,我猜我在模板上声明的参数是未定义的或根本没有
我是不是遗漏了什么?或者我只是让上下文(ordersummary)被重新定义以包含行类 Hbs帮助程序完全定义为常规把手帮助程序:它们在选项哈希中接收模板和反向函数,而不是作为常规参数。您的函数应该如下所示
function oddevenhelper(array, even, odd, options)
var fn = options.fn,
elseFn = options.inverse;
...
}
而FiddleHbs helpers完全被定义为常规handlebar helpers:它们在选项散列中接收模板和反向函数,而不是作为常规参数。您的函数应该如下所示
function oddevenhelper(array, even, odd, options)
var fn = options.fn,
elseFn = options.inverse;
...
}
再次感谢,我现在了解了把手模块助手是如何传递函数和数据的,我通过添加oddevenhelper.js requirejs模块编辑了您的答案,对于那些感兴趣的人再次感谢,我现在了解把手模块助手是如何传递函数和数据的,我为那些感兴趣的人添加了一个oddevenhelper.js requirejs模块来编辑你的答案