Asp.net MVCでは、次の2つのビューがあります。
最初のビュー:
<div data-role="listview" data-theme="g" id="subcategorieslistview">
<ul data-bind="template: { name: 'subcategory-template', foreach: subcategories }" id="subcategories">
<script type="text/html" id="subcategory-template">
<li data-role="button" data-icon="arrow-r" data-iconpos="right">
<a data-bind="attr : { title : name, categoryid : categoryId, lazyloaddescriptor : lazyLoadDescriptor}"><label data-bind="text: name"></label></a>
</li>
</script>
</ul>
<script type="text/javascript">
$(document).one("pageinit", function () {
<!-- Ajax load of view model --->
</script>
2番目のビュー:
<div data-role="listview" data-theme="g" id="archivecontainerslistview">
<ul data-bind="template: { name: 'archivecontainers-template', foreach: archivecontainers }" id="archivecontainers">
<script type="text/html" id="archivecontainers-template">
<li data-role="button" data-icon="arrow-r" data-iconpos="right">
<span data-bind="text: name"></span>
<span data-bind="text: synopsis" class="ui-li-count"></span>
</li>
</script>
</ul>
<script type="text/javascript">
$(document).one("pageinit", function () {
<!-- Ajax load of view model --->
</script>
最初のビューに移動すると、テンプレートは正常に機能します。次に、2番目のビューに移動すると、テンプレートが再び期待どおりに機能しています。
ただし、戻るボタンを押して最初のビューに戻ると、knockout.jsでエラーが発生します。
Uncaught Error: Unable to parse bindings.
Message: ReferenceError: synopsis is not defined;
フィールドの概要は2番目のビューにあり、DOMを調べると、2番目のページがDOMから削除されると予想した場所に、両方のページがロードされていることがわかります(エラーが2番目のページのDOMからの削除を妨げているかどうかはわかりません)。
最初のページがアクティブ化されたときに2番目のページがDOMにあるため、2番目のページが表示されていなくても、2番目のページでバインディングが開始されているようです。これが正しいかどうかわからない。
Jquery mobileまたはKnockOutに、このエラーを回避できるように2番目のページからバインディングを削除するものはありますか?