2017-08-28 10 views
0

現在、Node.js環境内でHandlebars.js(v 4.0.10)を使用しています。Handlebars.js - 値の列の整列

次の形式のJSON文字列を生成しようとしていますが、解決策を見つけることができませんでした。

は、次のようなJSONオブジェクトを考える:

は、どのように私は次のことを生成するためにハンドルバーを使用することができますプロパティはお互いに垂直に配向されているか

"{ 
    foo: [ 
    {bar: 1,   baz: "test"}, 
    {bar: 2,   baz: "test",  qux: "somethingElse"}, 
    {bar: 234,  baz: "testtest"}, 
    {bar: 34674,  baz: "a",   qux: "moreText"}, 
    ] 
}" 

は注意してください。私は粗い実装が動作しているが、テキストを正しく整列させる方法で空白を正しく保存する方法がわからない。

これは私のテンプレートファイルです:

{ 
    "foo": [ 
    {{#each foo}} 
     { "bar": {{bar}},  "baz": "{{{baz}}}"{{#if qux}},  "qux": "{{{qux}}}"{{/if}} }{{#unless @last}},{{/unless}} 
    {{/each}} 
    ] 
} 

問題があれば財産は、5の34674(文字数対異なる長さ3の(すなわち、234(文字数)の値を持っているということです))、それは "stairstepping"効果を生成し、プロパティはお互いに垂直に整列していません。したがって、それは次のようにレンダリングされます:

"{ 
    foo: [ 
    {bar: 1,  baz: "test"}, 
    {bar: 2,  baz: "test",  qux: "somethingElse"}, 
    {bar: 234,  baz: "testtest"}, 
    {bar: 34674,  baz: "a",  qux: "moreText"}, 
    ] 
}" 

誰もが魔法を助けることができるかもしれない彼らの袖をトリックがありますか?

+0

タブ文字を挿入できませんでしたか? –

+0

詳細を教えてください。挿入場所と方法は?私はスペース以外のタブを使うことができますが、それでもプロパティの良い垂直アライメントを引き起こすために使用するタブ/スペースの数を計算することは問題です。 – dvsoukup

答えて

0

あなたの変数にタブを追加することができます

res.render('test', { 
    test1: "12345\t", 
    test2: "12345678\t", 
}); 

次に、あなたのテンプレートで: example output

<pre> 
    {{test1}}block 
    {{test2}}block 
</pre> 

をこれは、あなたがそれを置くどのようなタグに応じて、このようなものを作る必要があります