3

私はNodeJS/Express3とdusts-linkedinを使用しており、以下と同等のことをしたいと思っています:

for(var i = locals.first;i < (locals.first + locals.pages); $i++) {
    <div>i</div>
}

ヘルパー関数を作成する必要があると思いますが、その方法が不明です

4

1 に答える 1

5

Ok。私の場合、ページャーを作成しようとしていましたが、一般的なアイデアを得ることができるように、答えを少し単純化します。これを行うためのよりクリーンな方法があるかもしれません。

私のヘルパーは「ページャー」と呼ばれます。渡したいローカルにいくつかの明示的な変数があります。これらは locals.start と locals.end です。それぞれは、ページャーの開始と終了を表す数値です。また、ページャーに使用する URL も渡します。

私のテンプレートでは、必要なすべてのパラメーターとともにヘルパーを呼び出します。

{@pager start="{locals.start}" end="{locals.end}" url="/articles?page=%page%"/}

次に、アプリにこのヘルパーを追加します。ダスト モジュールが存在することを確認する必要があります。

cons = require('consolidate'),
dust = require('dustjs-linkedin'),

次に、ヘルパーを作成します。

dust.helpers['pager'] = function(chunk, context, bodies, params) {

  //tapping these to get the actual value (since we passed vsaraibles) and casting as a number with '+'
  first = +dust.helpers.tap(params.first, chunk, context);
  last = +dust.helpers.tap(params.last, chunk, context);

  //this one is all ready since we just passed a string
  url = params.url;

  //build our html - do whatever you need here - this is an example
  var html = '<ul>';
  for(var i = first; i <= last; i++) {
    //I used a replace and placeholder - prob other methods you can use
    html += '<li><a href="' + url.replace('%page%', i) + '">' + i '</a></li>';
  }
  html += '</ul>';

  //write this back to the template
  chunk.write(html);

  //return it
  return chunk;
};

これが誰かを助けることを願っています

于 2012-08-23T21:17:06.953 に答える