Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有requirejs的handlebarjs块辅助函数(要添加到数组每行上的简单奇偶属性)_Javascript_Backbone.js_Requirejs_Handlebars.js_Javascript Framework - Fatal编程技术网

Javascript 带有requirejs的handlebarjs块辅助函数(要添加到数组每行上的简单奇偶属性)

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

我在我的requirejs主干应用程序中包括handlebarjs,我想在模板上实现行类助手定义(奇数|偶数)

我正在尝试将本机handlebar助手“移植”到基于模块的(requirejs):

使用适用于requirejs的handlebarjs插件:

这是我到目前为止得到的一个oddevenhelper.js

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;

    ...
}

而Fiddle

Hbs helpers完全被定义为常规handlebar helpers:它们在选项散列中接收模板和反向函数,而不是作为常规参数。您的函数应该如下所示

function oddevenhelper(array, even, odd, options)
    var fn = options.fn,
        elseFn = options.inverse;

    ...
}

再次感谢,我现在了解了把手模块助手是如何传递函数和数据的,我通过添加oddevenhelper.js requirejs模块编辑了您的答案,对于那些感兴趣的人再次感谢,我现在了解把手模块助手是如何传递函数和数据的,我为那些感兴趣的人添加了一个oddevenhelper.js requirejs模块来编辑你的答案