このプロジェクトでは、jQuery、jQuery Mobile、Handlebarを使用しています
以下のようなコースページがあります。
コースをクリックすると、コースの特定のレッスンを含む以下のページが表示されます。
上記のレッスンは、ハンドルバーを使用するJSONから取得したものです。以下はハンドルバーテンプレートです。
<script id="lessontemplate" type="text/x-handlebars-template">
{{#each this}}
<li><a href="{{lesson}}">{{lessonname}}</a></li>
{{/each}}
</script>
以下は、テンプレートを置き換えるJSコードです。
("#mycourses").on('click','.mycourse',function(e){
e.preventDefault();
var url = domainURL+'coursedata.php?callback=?';
$.getJSON( url, { courseid: $(this).data('courseid') }, function( data ) {
var tmpl = $('#lessontemplate').html();
console.log(tmpl);
$('h1.coursename').html(data.coursename);
lessontemplate = Handlebars.compile( tmpl );
console.log( lessontemplate(data.coursedetails) );
$('ul#lessons').html( lessontemplate(data.coursedetails) );
$.mobile.changePage("#coursedetails", {transition: 'slide'});
});
});
次に、コースページに移動してコースをクリックすると、レッスンが正しく表示されません。以下の出力を示します。
最初にクリックしたConsole.log()の出力は次のとおりです
{{#each this}}
<li><a href="{{lesson}}">{{lessonname}}</a></li>
{{/each}}
<li><a href="1">Lesson Name 1</a></li>
<li><a href="2">Lesson Name 2</a></li>
<li><a href="3">Lesson Name 3</a></li>
2回目のクリックConsole.log()の出力は次のとおりです
{{#each this}}
<li><a href="{{lesson}}">{{lessonname}}</a></li>
{{/each}}
<li><a href="1">Lesson Name 1</a></li>
<li><a href="2">Lesson Name 2</a></li>
<li><a href="3">Lesson Name 3</a></li>
1回目のConsole.log()= 2回目のConsole.log()をクリックしますが、2回目に正しい出力が得られないのはなぜですか?2回目のレッスンが正しく表示されないのはなぜですか?