1

meteor アプリを 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 に答える