0

次のようなものがあると仮定します。

{{#each pageElements}}
  {{#is pageElement "news"}}
    {{#withSort pages "data.posted" dir="desc"}}
      <a href="/{{relativeLink}}">
        {{formatDate data.posted "%d.%m.%Y"}}: {{data.title}}
      </a>
    {{/withSort}}
  {{/is}}
{{/each}}

withSort吐き出す最初のアイテムだけを表示するにはどうすればよいですか?

firstこれにはコレクションヘルパーを使用できると思います( http://assembly.io/helpers/helpers-collections.html)が、正しい構文を取得できていません。

4

1 に答える 1

1

用に構築された handlebars-helpers のヘルパーgrunt-assembleは、この特定のケースで実行したいことの一部を処理しません。

私たちは dev ブランチの公開に取り組んでおり、これらのいくつかはハンドルバーのサブエクスプレッションで簡単に使用できるようになります。

今のところ、ソートを行う独自のヘルパーを作成することをお勧めしますfirst

ヘルパーsort.jsファイルを作成します。

var get = require('get-value');

module.exports = function sort(array, field, options) {
  var arr = cloneArray(array);
  if (typeof options === 'undefined') {
    options = field;
    field = null;
    arr = arr.sort();
  } else {
    arr = arr.sort(sortBy(field));
  }

  if (options.hash && options.hash.dir === 'desc') {
    arr = arr.reverse();
  }
  return arr;
};

function cloneArray(arr) {
  var len = arr.length, i = 0;
  var results = new Array(len);
  while(i++ < len) {
    results[i] = arr[i++];
  }
  return results;
}

function sortBy(prop) {
  return function(a, b) {
    var aVal = get(a, prop);
    var bVal = get(b, prop);
    if (aVal > bVal) {
      return 1;
    } else {
      if (aVal < bVal) {
        return -1;
      }
    }
    return 0;
  }
}

ヘルパーを assemble で登録し、テンプレートで使用します。

{{#each pageElements}}
  {{#is pageElement "news"}}
    {{#withFirst (sort pages "data.posted" dir="desc")}}
      <a href="/{{relativeLink}}">
        {{formatDate data.posted "%d.%m.%Y"}}: {{data.title}}
      </a>
    {{/withFirst}}
  {{/is}}
{{/each}}

これで必要なものが得られるはずです。それが役に立てば幸い。

于 2016-02-08T23:58:33.880 に答える