1

我已将我的流星应用程序升级到 0.8.0,现在车把自定义助手已停止工作,助手允许我在最后一项附加到列表时更改行为,有谁知道我如何获得车把助手再次工作或如何使此功能与最新版本的流星一起工作,谢谢!

助手代码(原始链接)

Handlebars.registerHelper("foreach", function(arr, options){

  if(options.inverse && !arr.length)
    return options.inverse(this);

  return arr.map(function(item, index){
    item.$index = index;
    item.$first = index === 0;
    item.$last  = index === arr.length - 1;
    return options.fn(item);
  }).join('');
});
4

3 回答 3

2

Meteor 已将 Handlebars 命名空间迁移到 UI

UI.registerHelper("foreach", function(arr, options){
  return arr.map(function(item, index){
    item.$index = index;
    item.$first = index === 0;
    item.$last  = index === arr.length - 1;
    return options.fn(item);
  }).join('');
});
于 2014-04-13T14:26:42.820 回答
0

我几乎已经编写了自己的辅助函数,在它对我有用之前它可能不是最简单的解决方案(现在!)

eachLastItem = function (arr){
  if(arr.length > 0){
    if(typeof arr[0] == "object"){
      var cnt = lastItem = 0;
      _.each(arr, function(obj){
        (cnt != arr.length - 1) ? lastItem = 0 : lastItem = 1;
        _.extend(arr[cnt], {__lastItem: lastItem});
        cnt++; });
    }else{
      var cnt = lastItem = 0;
      var newArr = [];
      _.each(arr, function(str){
        (cnt != arr.length - 1) ? lastItem = 0 : lastItem = 1;
          var newObj = {
            str: str,
            __lastItem: lastItem }
          newArr.push(newObj);
        cnt++;
      });
      arr = newArr;
    }
    return arr;
  }else{
    return null;
  }
}

在模板中,我使用这个:

{{#each array}}
  <li>{{str}}</li>
  {{#if __lastItem}}
    {{!  }}
  {{else}}
  {{/if}}
{{/each}}
于 2014-04-14T18:24:06.177 回答
0

做帮手:

Template.registerHelper( 'isLastEach', ( arr, idx ) => {
    return arr.length == idx+1 ? true : false;
});

使用内置 @index 帮助器的示例:

{{#each yourArray}}             
    {{getNickname this}}{{#unless isLastEach yourArray @index }},{/unless}}
{{/each}}
于 2018-05-24T01:51:39.103 回答