非常に単純なWebアプリケーションに2つのファイルがあります
1 つ目は標準の index.html で、次のようになります。
<body>
<div id="add-stuff"></div>
<script id="the-template" type="text/x-handlebars-template" src="some-template.erb.html"></script>
<script type="text/javascript">
var data = [];
var source = $("#the-template").html();
var template = Handlebars.compile(source);
$('#add-stuff').html(template(data));
</script>
</body>
2 番目は私のハンドルバー テンプレート「some-template.erb.html」で、以下のようになります。
<table>
{{#each item}}
<tr><td>{{ item.name }}</td></tr>
{{/each}
</table>
上記のインライン JavaScript の問題は、「.html()」部分を実行しようとすると、常に空の文字列が返されることです (erb.html ファイルでリンクしているため)。
$.ajax を使用してテンプレートを取得する場合にこれを達成できる回避策を見つけましたが、上記のようなものを好むでしょう (したがって、ネストされた jQuery コールバックなしでテンプレート クライアント側を含めることができます)。 .
これは可能ですか?そうでない場合、$.ajax ベースのアプローチを改善するにはどうすればよいですか?
** 機能する ajax ベースのアプローチを以下に示します **
<body>
<div id="add-stuff"></div>
<script type="text/javascript">
$.ajax({
url: 'some-template.erb.html',
cache: true,
success: function (source) {
var data = [];
var template = Handlebars.compile(source);
$('#add-stuff').html(template(data));
}
});
</script>
</body>
$ .ajaxのバージョンをもう少し詳しく示した stackoverflow の質問へのリンクを次に示します。