ハンドルバーテンプレート内の小さなHTMLのチャンクをJSONオブジェクトの一部に変換する必要があります。ここではハンドルバーテンプレートの関連部分です:ハンドルバーでJSONを生成する
<ul>
{{#each props.items}}
<li>
<a>{{name}}</a>
</li>
{{/each}}
</ul>
私が直面してる問題は、私はJSONオブジェクト内の最終的な出力は、文字列の配列(最終的なコードの1行につき1つ)のいずれかである必要があることであるOR改行のない単一の文字列。代わりに、最後のブロック全体を1つの文字列として取得しますが、と改行を付けて - JSONが無効になります。
私はHandlebarsテンプレートまたはJSONを所有していないので、どちらも変更できません。ここで
は私のコードは、現在、次のようになります。
var fileContents = Plugins.fs.readFileSync(hbsPath, "utf8");
//Next line is my latest attempt to close each line with quotes,
//inject a newline and start new line with quotes.
//It doesn't work - the newline isn't inserted.
//I've also tried \n\r, \r\n, \r
fileContents = fileContents.replace(/(\r\n|\n|\r)/gm, "\",\n\"");
var template = hbs.compile(fileContents);
var thisProps = {props: props};
return new hbs.SafeString(template(thisProps));
私は単にコンソールに返された文字列を記述する場合、それは右に見えますが、私はそれでJSONファイルを作成するときに、終端されていない文字列は次のようにフラグが付けられます無効。
更新は:JSONは、画像に入ってくるのはここです:
{
"code" : [{{renderSnippet "MyPartial" MyModel }}]
}
これはハンドルのプロセスと{{ }}
内側部分がハンドルバーから出てくる文字列に置き換えられたファイルです。その文字列は問題です。行内にJSONを無効にする改行が含まれています。私はそれを改行なしの単一の文字列にするか、文字列の配列を別々の文字列として各行に加える必要があります。
任意のポインタ?
ありがとうございました。
あなたはJSON文字列を作成する方法を示していなければなりません。 –
@ t.niese:ハンドルバーがそうしています。それは問題です - 私はそれを制御していません。上の2番目のスニペットの最後の3行は、上記の最初のスニペットで、Handlebarsテンプレートの文字列生成を処理します。 – TimTheEnchanter
ハンドルバーは文字列を返しますが、JSONは作成しません。なぜあなたはJSONを作成すると思いますか? –