私はハンドルバーをいじり始めたばかりで、ページの読み込み時にいくつかのアイテムをロードする方法を理解するのに苦労しています。次に、ajax リクエストで、より多くのアイテムをロードし、同じテンプレートを使用してコンテンツに追加します。ページは初期データを正しくロードしますが、2 番目の要求ではすべての初期データが上書きされます。
すべてのコンテンツを格納する div は #recipes です
<a href="#" id="more">Show More</a>
<div id="recipes">
<script id="Handlebars-Template" type="text/x-handlebars-template">
<div id="Content">
{{#each Recipes}}
<div class='Box'>
<h3>{{Name}}</h3>
</div>
{{/each}}
</div>
</script>
</div>
<script type="text/javascript">
$.ajax({
url : 'Recipe.php',
success:function(data){
var Recipes = JSON.parse(data);
var Source = document.getElementById("Handlebars-Template").innerHTML;
var Template = Handlebars.compile(Source);
var HTML = Template({ Recipes : Recipes });
document.getElementById('recipes').innerHTML +=HTML;
}
});
</script>
ユーザーが「もっと見る」をクリックすると、次のコードが実行されます
<script>
$(function(){
$('#more').click(function(e){
$.ajax({
url : 'Recipes2.php',
success:function(data){
var Recipes = JSON.parse(data);
var Source = document.getElementById("Handlebars-Template").textContent;
var Template = Handlebars.compile(Source);
var HTML = Template({ Recipes : Recipes });
$('#recipes').append(HTML);
}
})
});
});
</script>
返されるデータはすべて正しいです。最初のデータが追加されるのではなく、上書きされるだけです。テンプレートの設定方法と、テンプレート作成プロセスの一般的な理解不足に関係していると感じています。「パーシャル」のアイデアに出くわしましたが、これを使用する必要があるかどうかはわかりません。このようなものがどのように構成されるべきか、または有用なチュートリアルを教えてくれる人はいますか? 私が見たものはすべて、すべてのデータを置き換えることに焦点を当てているか、初期ロードでのみ機能するようです。
ありがとう