2012-05-24 30 views
2

我在學習backbone.js,以便爲現有的Web應用程序添加一些交互功能。在初始頁面加載時,我使用reset()方法suggested in the docs引導一些初始數據到頁面中。這很好。我也可以創建新的模型實例,並且視圖像我期望的那樣處理它們;它們顯示在最初的數據旁邊,並且一切都很好。 (新數據也碰到數據庫就好)Backbone.js - 在後退按鈕後保留數據

但是,如果我點擊鏈接到不同的頁面(不使用主幹路由或任何東西,只是一個正常的鏈接),然後打我的瀏覽器的後退按鈕,之前創建的新模型已經消失;只有最初的數據顯示出來。我已經做了一些調試,發現每次頁面加載時都會運行reset()方法,所以推測這就是我添加的額外數據的核心。 (但是,如果我真的刷新頁面,新的數據將再次出現,因爲現在它變得太自舉。)

我知道我可以使用fetch()獲得新添加的數據(與一起較舊的數據),但我試圖避免這種情況,這是因爲(a)每當頁面加載時這是額外的請求,以及(b)因爲文檔說這不是理想的。

那麼,我該怎麼做,以便使用後退按鈕不會使東西(暫時)消失?

+0

一個沒有緩存的瀏覽器指令可能? – asawyer

+0

您是否碰巧想出了這個,@peppergrower?我遇到了同樣的問題。 –

回答

0

頁面加載模型,視圖,集合和路由器。頁面集合通過reset(引導)進行收集。用戶單擊鏈接導航到另一個頁面,單擊後退按鈕。現在發生一些有趣的事情,

  • 路由器在加載頁面之前匹配url(當點擊返回按鈕時)。在比賽期間,您必須驗證集合是否包含新數據,然後執行collection.fetch()
  • 這會讓你獲得最新的始終,撞上服務器只有一次(無論是您的收藏是空的或不包含新鮮數據)