2012-08-12 118 views
1

隨着Asp.net MVC綁定錯誤,我有兩個觀點:淘汰賽和JQueryMobile使用模板

第一視點:

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

​​

第二種觀點:

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

​​

當我轉到第一個視圖時,模板工作正常。 然後我轉到第二個視圖,模板再次按預期工作。

然而,當我打後退按鈕回到第一個觀點,我在knockout.js得到一個錯誤:

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

領域簡介是第二視圖,並通過檢查DOM我看到兩個頁面加載在哪裏,因爲我預計第二個頁面將從DOM中刪除(不知道錯誤是否阻止從DOM中刪除第二個頁面)。

看起來,因爲當第一頁被激活時第二頁在DOM中,即使第二頁未被顯示,綁定似乎也在第二頁中被啓動。不知道這是否正確。

Jquery mobile或KnockOut中是否有任何東西以某種方式從第二頁中刪除綁定,以便我可以避免此錯誤?

+0

那麼,如果'archivecontainers'爲空,那麼綁定不應該被應用。它是空的嗎? – 2012-08-12 19:08:35

+0

當我回到第一個視圖時,ArchiveContainers處於第二個視圖。所以我認爲它仍然會有數據。那麼,如何在回到第一個視圖時清空它? – 2012-08-15 09:29:49

+0

可能的重複[從視圖中取消綁定視圖模型](http://stackoverflow.com/questions/11032129/unbind-view-model-from-view-in-knockout) – 2012-09-14 14:31:34

回答

1

Jquery mobile或KnockOut中是否有任何東西以某種方式從第二頁中刪除綁定,以便我可以避免此錯誤?

是的。

您是否嘗試過撥打Knockout's cleanNode() method從第二頁移除綁定?