1

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番目のページからバインディングを削除するものはありますか?

4

1 に答える 1

1

Jquery mobileまたはKnockOutに、このエラーを回避できるように2番目のページからバインディングを削除するものはありますか?

はい。

KnockoutのcleanNode()メソッドを呼び出して、2番目のページからバインディングを削除しようとしましたか?

于 2012-09-04T20:18:01.113 に答える