FancyTree 狀態保持

FancyTree很是優秀的樹控件node

examples:http://wwwendt.de/tech/fancytree/jquery

如何將樹節點的選中狀態保存下來,不管刷新頁面仍是,ajax重複請求,都保持在上一次狀態呢?git

FancyTree提供狀態持久化保存擴展,方案以下:github

https://github.com/mar10/fancytree/wiki/ExtPersistajax

$("#tree").fancytree({
  extensions: ["persist"],
  checkbox: true,
  persist: {
    // Available options with their default:
    cookieDelimiter: "~",    // character used to join key strings
    cookiePrefix: undefined, // 'fancytree-<treeId>-' by default
    cookie: { // settings passed to jquery.cookie plugin
      raw: false,
      expires: "",
      path: "",
      domain: "",
      secure: false
    },
    expandLazy: false, // true: recursively expand and load lazy nodes
    overrideSource: true,  // true: cookie takes precedence over `source` data attributes.
    store: "auto",     // 'cookie': use cookie, 'local': use localStore, 'session': use sessionStore
    types: "active expanded focus selected"  // which status types to store
  },
  [...]
});

Options

  • cookieDelimiter, type: {string}, default: '~'
    Character used to join key strings.cookie

  • cookiePrefix, type: {string}, default: 'fancytree-<treeId>-'
    Used to generate storage keys.session

  • cookie, type: {object}, default: use a session cookie
    Options passed to $.cookie plugin (only if cookies are used; see also 'store' option).dom

  • expandLazy, type: {boolean}, default: false
    true: recursively expand and load lazy nodes.ide

  • fireActivate, type: {boolean}, default: true
    false: suppress activate event after active node was restored.spa

  • overrideSource, type: {boolean}, default: true
    true: persisted information will be used, even if source data is set to true or false.
    false: persisted information will only be used if source data is undefined.

  • store, type: {string}, default: 'auto'
    Storage type 'local': localStorage, 'session': sessionStorage, 'cookie': use js-cookie (or jquery-cookie ) plugin.
    'auto': use sessionStorage if available, fallback to cookie.
    Use 'local' (or 'cookie' with expiration settings) to store status over sessions.

  • types, type: {string}, default: 'active expanded focus selected'
    Which status types to store, separated by space.

Events

  • restore
    Fired after tree status is restored.

Methods

    • {void} tree.clearCookies(types)
      Reset persistence data.
      {string} [types='active expanded focus selected']

 

這裏注意:cookiePrefix,若是不設置該值的話,每次ajax請求的tree都是不同(非刷新頁面),沒法達到保持狀態的效果,設置該值後,不管刷新頁面仍是ajax請求,均可以保持狀態了。

參考文獻:http://stackoverflow.com/questions/33147617/fancytree-only-loads-persist-state-after-page-refresh

cookie: { expires:365 }, 能夠設置cookie的有效期,固然還有其餘若干存儲方式可選擇

相關文章
相關標籤/搜索