2013-04-05 26 views
1

我已經建立了一個頁面,用於淘汰由於過多的東西,它的工作令人驚訝。如何從整個圓頂刪除knockoutjs綁定

我的問題出現在當導航發生: 的網頁加載 - 偉大工程 用戶導航離開 - 偉大工程 用戶按下後退按鈕 - 原來分頁

在我看來,一旦網頁被返回給使用原始綁定的後退按鈕仍然存在,然後頁面將其數據下載到一個調用ko.applyBinding,導致綁定然後應用兩次打破頁面。

如何刪除原始綁定,並且需要將頁面綁定到新下載的數據,而不是導航前可用的數據。

任何幫助將不勝感激。

+0

凡在你的代碼,你將你的綁定? '$(function(){})//準備好jquery'或者只是在頁面底部的腳本標籤中等? – Joe 2013-04-05 14:50:37

+0

是的我正在使用jquery $(function(){}); – QBM5 2013-04-05 14:53:46

回答

0

這裏有一個想法來自:https://stackoverflow.com/a/13459885/989516

ko.unapplyBindings = function ($node, remove) { 
    // unbind events 
    $node.find("*").each(function() { 
     $(this).unbind(); 
    }); 

    // Remove KO subscriptions and references 
    if (remove) { 
     ko.removeNode($node[0]); 
    } else { 
     ko.cleanNode($node[0]); 
    } 
}; 
+0

我確實遇到過這樣的代碼並嘗試一下,但還沒有能夠讓它正常工作。繼續拋出「Uncaught TypeError:Object#沒有方法'find'」錯誤 – QBM5 2013-04-05 16:11:15

+0

可能是因爲它應該是一個jQuery包裝節點。這就是find()方法的來源。所以也許嘗試調用像ko.unapplyBindings($('#container'),true),其中'容器'是一些外部元素的內容正在被替換的id。或ko.unapplyBindings($(document),true) – 2013-04-05 16:16:05

+0

好的提示,它似乎確實有效,但主要問題仍在發生。 – QBM5 2013-04-05 16:21:28