与模板的Knockout和JQueryMobile绑定错误

时间:2012-08-12 15:51:30

标签: asp.net-mvc jquery-mobile knockout.js

使用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中有什么东西以某种方式从第二页删除绑定,以便我可以避免此错误吗?

1 个答案:

答案 0 :(得分:1)

  

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

您是否尝试过调用Knockout's cleanNode() method从第二页删除绑定?