【问题标题】:Knockout and JQueryMobile binding error with templates模板的淘汰赛和 JQueryMobile 绑定错误
【发布时间】:2012-08-12 15:51:29
【问题描述】:

对于 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;

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

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

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

【问题讨论】:

  • 如果archivecontainers 为空,则不应应用绑定。是空的吗?
  • 当我“返回”到第一个视图时,ArchiveContainers 在第二个视图上。所以我认为它仍然会有数据。那么如何在返回第一个视图时清空它呢?

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


【解决方案1】:

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

是的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2015-08-19
    • 2014-03-26
    相关资源
    最近更新 更多