$state

Simpelt klientside state objekt:

// Kræver jQuery
var $state = function() {
    /// Klientside state-objekt
    // Private objekter
    var _dict = {};
    var _serialize = function() {
        var res = "";
        for (var key in _dict) {
            res += (res ? "|" : "") + key + "=" + _dict[key];
        }
        return res;
    };
    var _deserialize = function(data) {
        var items = data.split(/[|#]/g);
        for (var i = 0, l = items.length; i < l; i++) {
            if (!items[i])
                continue;
            var kevValue = items[i].split('=');
            if (kevValue.length < 2)
                continue;
            _dict[kevValue[0]] = kevValue[1];
        }
    };
    var _save = function() {
        location.hash = _serialize();
    };

    // Initialicering
    _deserialize(location.hash);
    $(document).ready(function() {
        for (var key in _dict) {
            $("#" + key).val(_dict[key]);
        }
    });

    // Public / offentlige objekter
    return {
        set: function(key, value) {
            _dict[key] = value;
            _save();
        },
        get: function(key, defaultValue) {
            /// Udleder værdien fra hash-staten
            if (typeof (_dict[key]) == "undefined")
                return defaultValue;
            return _dict[key];
        },
        hookup: function(id) {
            /// Opsætter changehandler til at afspejle værdi i state
            ///
            $(id).change(function() {
                var $caller = $(this);
                $state.set($caller.attr("id"), $caller.val());
            });
        }
    };
} ();

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen | Modified by Mooglegiant

About

Mit navn er Jesper Jensen, og jeg arbejder til dagligt som web-udvikler hos DGI, hvor mit speciale er klientside applikationer. Før det var jeg nogle år i robotbranchen, hvor jeg arbejdede med 3D simulering og system koordinering. Jeg elsker webudvikling, og specielt JavaScript har min interesse. Jeg har blogget om mine oplevelser med udvikling siden 2004

Calendar

<<  september 2010  >>
mationtofr
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

RecentComments

Comment RSS