1

私はdust.jsを使用して、場合によっては長く、次のようなアンダースコアを含む変数名のリストをレンダリングしています。

SUM_COUNT_LABOR_COUNTRIES_SMS_PAST

ブラウザはアンダースコアをラップしないため、見苦しくなります。ダストテンプレートで、各アンダースコアの後にゼロ幅のスペースを追加して、ブラウザがそれをラップできるようにしたいのですが。これは間違いなくテンプレートレイヤーに属し、モデルには属しませんが、dust.jsを使用してこれを適切に実現する方法を理解できません。それ以外の場合は、プレゼンテーションをロジックから分離する非常に優れた原則です。

「ヘルパー」関数を作成しますか?ヘルパー関数はどこに配置しますか?テンプレートから呼び出すにはどうすればよいですか?

4

1 に答える 1

10

ほこりにはこれに近づく方法がたくさんあります。私があなたが探していると思うのは、おそらくダストフィルターを定義することです。dust.filtersを拡張して、独自のフィルターを追加できます。dust.filtersは、ソースでは次のようになります。

dust.filters = {
  h: function(value) { return dust.escapeHtml(value); },
  j: function(value) { return dust.escapeJs(value); },
  u: encodeURI,
  uc: encodeURIComponent,
  js: function(value) { if (!JSON) { return value; } return JSON.stringify(value); },
  jp: function(value) { if (!JSON) { return value; } return JSON.parse(value); }
};

したがって、実行したいのは、変数をフィルタリングする別のKey-Valueを追加することです。たとえば、アンダースコアを使用する場合:

_.extend(dust.filters, {zws: function(value){ your code here}})

次に、ダストテンプレートで次のように呼び出すことができます。

the variable is: {variable|zws}

お役に立てれば。

于 2012-06-26T05:53:29.387 に答える