【问题标题】:Jquery UI Save State Using CookieJquery UI 使用 Cookie 保存状态
【发布时间】:2011-10-26 23:52:37
【问题描述】:

有什么方法可以保存 jquery layout ui 的状态吗??

当我查看谷歌时,我得到了 jquery.layout.state.js,但它似乎不起作用:(

我想要的是当西面板或北面板关闭时,它会将其状态保存到cookie中,这样如果我们刷新页面,面板状态仍然会关闭

也许有人曾经尝试过?

谢谢在高级..

如果布局设置中有一些可以保存状态的配置, 然后这是我的布局设置

var layoutSettings_Outer = {

    name: "outerLayout" // NO FUNCTIONAL USE, but could be used by custom code to 'identify' a layout

    // options.defaults apply to ALL PANES - but overridden by pane-specific settings

,   defaults: {

        size:                   "auto"

    ,   minSize:                50

    ,   paneClass:              "pane"      // default = 'ui-layout-pane'

    ,   resizerClass:           "resizer"   // default = 'ui-layout-resizer'

    ,   togglerClass:           "toggler"   // default = 'ui-layout-toggler'

    ,   buttonClass:            "button"    // default = 'ui-layout-button'

    ,   contentSelector:        ".content"  // inner div to auto-size so only it scrolls, not the entire pane!

    ,   contentIgnoreSelector:  "span"      // 'paneSelector' for content to 'ignore' when measuring room for content

    ,   togglerLength_open:     35          // WIDTH of toggler on north/south edges - HEIGHT on east/west edges

    ,   togglerLength_closed:   35          // "100%" OR -1 = full height

    ,   hideTogglerOnSlide:     true        // hide the toggler when pane is 'slid open'

    ,   togglerTip_open:        "Tutup Panel"

    ,   togglerTip_closed:      "Buka Panel"

    ,   resizerTip:             "Resize This Pane"

    //  effect defaults - overridden on some panes

    ,   fxName:                 "slide"     // none, slide, drop, scale

    ,   fxSpeed_open:           750

    ,   fxSpeed_close:          1500

    ,   fxSettings_open:        { easing: "easeInQuint" }

    ,   fxSettings_close:       { easing: "easeOutQuint" }

}

,   north: {

        spacing_open:           1           // cosmetic spacing

    ,   togglerLength_open:     0           // HIDE the toggler button

    ,   togglerLength_closed:   -1          // "100%" OR -1 = full width of pane

    ,   resizable:              false

    ,   slideTrigger_open:      "click"     // default

    ,   slidable:               true

    //  override default effect, speed, and settings

    ,   fxName:                 "drop"

    ,   fxSpeed:                "normal"

    ,   fxSettings:             { easing: "" } // nullify default easing

    }

,   west: {

        size:                   250

    ,   spacing_closed:         21          // wider space when closed

    ,   togglerLength_closed:   21          // make toggler 'square' - 21x21

    ,   togglerAlign_closed:    "top"       // align to top of resizer

    ,   togglerLength_open:     0           // NONE - using custom togglers INSIDE west-pane

    ,   togglerTip_open:        "Tutup Panel Navigasi"

    ,   togglerTip_closed:      "Buka Panel Navigasi"

    ,   slideTrigger_open:      "click"     // default

    ,   initClosed:             false

    ,   resizable:              false

    //  override default effect, speed, and settings

    ,   fxName:                 "drop"

    ,   fxSpeed:                "normal"

    ,   fxSettings:             { easing: "" } // nullify default easing

    }

,   center: {

        paneSelector:           "#mainContent"          // sample: use an ID to select pane instead of a class

    ,   onresize:               "innerLayout.resizeAll" // resize INNER LAYOUT when center pane resizes

    ,   minWidth:               200

    ,   minHeight:              200

    }

};

【问题讨论】:

    标签: jquery jquery-ui layout


    【解决方案1】:

    幸运的是 cookie 持久性(乌龟)内置在库中,并且有一个详细介绍的演示页面,它非常简单,并且通过单个属性标志启用 - 还有更多你能问一下吗:)

    options.cookie.autoSave
    

    jQuery Layout Saved State Demo

    Documentation

    编辑 - 来自文档

    // bind save() to window.onunload
    $(window).unload(function(){ layoutState.save('myLayout') }); 
    
    // DEFAULT LAYOUT SETTINGS
    var myDefaultSettings = {
        initClosed: true,
        west__size: 150,
        east__size: 150
    }
    
    var myLayout; // create global var for the layout-instance object
    
    $(document).ready( function() {
        // load & used 'saved-state' to override defaults
        myLayout = $("body").layout(
            $.extend( myDefaultSettings, layoutState.load('myLayout') )
        );
    });
    

    【讨论】:

    • 对不起,我应该声明您需要再引用 2 个小文件,请参阅:http://layout.jquery-dev.net/tips.cfm#State_Management
    • 我应该得到哪个 json?在 json2.js 中,只有 alert("error")。哦,是的,当我尝试上面的 i 示例时,它似乎不起作用,我不知道为什么会这样,我使用的是 firefox 5,你自己试过吗?也许你可以给我一些其他的例子,对不起,如果我问的太多了,谢谢.. XD
    • @martin:但是如果关闭浏览器,cookie 值会被删除,如何解决这个问题。有什么想法吗?
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2019-02-11
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多