Dust.jsで JSON キーを出力することはできますか?
つまり、テンプレートにハードコーディングせずにキー「名前」と「プロファイル」を出力するにはどうすればよいですか?
{
name: "Foo",
profile: {
name: "Bar"
}
}
バーコード化されていない最終テキスト、JSON キー名、およびプロファイル。
name Foo
profile - name - Bar
Dust.jsで JSON キーを出力することはできますか?
つまり、テンプレートにハードコーディングせずにキー「名前」と「プロファイル」を出力するにはどうすればよいですか?
{
name: "Foo",
profile: {
name: "Bar"
}
}
バーコード化されていない最終テキスト、JSON キー名、およびプロファイル。
name Foo
profile - name - Bar
できますよ。次のようにセクションを定義します。
{@keyvalue:cont}
{key} - {value}
{/keyvalue}
次に、JSON コンテキストを次のように再定義します。
cont:{
name: "Foo",
profile: "Bar" //I'm simplifying this a bit for the sake of this example
}
これは、上記のキー値セクションのコンテキストが「cont」のみに制限されるようにするためです。次に、次のようにキー値ヘルパーを定義できます。
"keyvalue": function(chunk, context, bodies){
var items = context.current(), //this gets the current context hash from the Context object (which has a bunch of other attributes defined in it)
ctx;
for (key in items) {
ctx = {"key" : key, "value" : items[key]};
chunk = chunk.render(bodies.block, context.push(ctx));
}
return chunk
}
トリックを行う必要があります。これをdustjs Webサイトでテストしました。これに追加して、ネストされたハッシュに入ることができれば幸いです。
これは、たとえば、コンテキストで HTML タグ属性を定義する必要がある場合に特に便利です。属性のセットを定義し、対応する値のセットを別のキーで定義する必要はありません。一緒にお願いします。読みやすく、管理しやすくなります。
以下の方法は @asyraf9 さんの回答とほぼ同じですが、JSON と使用例を再定義していません。
dust.helpers.iterate = function(chunk, context, bodies, params) {
params = params || {};
var obj = params['on'] || context.current();
for (var k in obj) {
chunk = chunk.render(bodies.block, context.push({key: k, value: obj[k]}));
}
return chunk;
}
ソース: https://github.com/rashad612/dustjs-helpers/commit/9039130dc060a4bf3e93856601891a7da9047bac
次のようにテンプレートで使用します。
{#myobject.myarray}
{@iterate on=.}
{key} - {value}
{/iterate}
{/myobject.myarray}
配列内のオブジェクトのすべてのキーと値を表示します。
Dust にはこの機能が組み込まれていません。哲学的には、JSON にはキーにデータが含まれてはならないからです。データ モデルを次のように変更することを検討してください。
{
name: "Foo",
profile: {
fields: [
{
title: "name",
value: "Bar"
}
]
}
}