0

我在使用RouteProvider的AngularJS設置中有一個標準的Master> Details頁面。如何使用AngularJS RouteProvider緩存頁面?

母版頁有一個「無限滾動」的變體,其中可以在兩端添加和刪除數據。例如,用戶正在查看聯繫人列表,並且已滾動到聯繫人列表的第312個條目,只保留編號爲200-400的聯繫人,並將條目1-200從範圍中刪除。當然,當用戶向下滾動到360以上時,該列表會附加401-500。如果滾動到240以上,該列表將以100-199「預先填寫」。

現在,用戶可以點擊一個特定的聯繫人並轉到詳細信息頁面。當按下「返回」(window.history.back)如何使與母版頁重新渲染,

  1. 精確列表200-400,因爲它是當網頁被留

  2. 滾動到312的位置

  3. (重要)聽衆仍然正確聽取超過360或240以上的滾動事件嗎?

這甚至可能嗎?如果是的話,請幫助我如何。

回答

0

我不會寫代碼這一點,這是一個有點困難,而不怎麼你的無限滾動的作品有了更深的瞭解,但會提供一些想法

你需要將存儲視圖的第一件事狀態,並在與服務同步的localStorage中提供更健壯的持久性(頁面重新加載或返回訪問)。

的視圖狀態的主要起點將是一個開始索引,所以你知道在你的數據陣列過濾...,要麼可能會或可能不會在你的應用程序或最終指數不變的長度值。

至於滾動,你可以爲了後續訪問設置.... angular.element(containerElement)[0].scrollTop = service.scrollTop作爲一個鬆散的例子使用滾動事件處理程序的指令與偏移scrollTop的值更新服務對象

還有$anchorScroll服務,您可以通過設置ID在每個項目上使用

這不會給你一個完整的解決方案,但希望能得到你開始

請注意,您將需要考慮它需要通過渲染ng-repeat時間推遲到下一個消化週期在嘗試設置scrollTop之前,如果你使用的是

+0

你能否建議一種機制來讓聽衆在主頁面保持活躍狀態​​(#3要求)? 我感到驚訝的是,我的需求沒有直接的緩存解決方案,我們必須編寫代碼來管理所有這些解決方案。你的迴應證實了我並不是瘋狂的爲自己旋轉。謝謝你。 – Nat