1

使用 Asp.net MVC,我有两种观点:

第一种观点:

<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>

第二种观点:

<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>

当我进入第一个视图时,模板工作正常。然后我转到第二个视图,模板再次按预期工作。

但是,当我点击后退按钮返回第一个视图时,我在 knockout.js 中收到错误消息:

Uncaught Error: Unable to parse bindings.
Message: ReferenceError: synopsis is not defined;

字段概要在第二个视图上,通过检查 DOM,我看到两个页面都加载到了我期望从 DOM 中删除第二个页面的位置(不确定错误是否阻止了第二个页面从 DOM 中删除)。

似乎因为当第一页被激活时第二页在 DOM 中,即使没有显示第二页,绑定似乎也在第二页中启动。不确定这是否正确。

Jquery mobile 或 KnockOut 中是否有任何东西可以以某种方式从第二页中删除绑定,以便我可以避免此错误?

4

1 回答 1

1

Jquery mobile 或 KnockOut 中是否有任何东西可以以某种方式从第二页中删除绑定,以便我可以避免此错误?

是的。

您是否尝试过调用Knockout 的cleanNode()方法从第二页中删除绑定?

于 2012-09-04T20:18:01.113 回答