• Jump To … +
    can.construct.proxy.js can.construct.super.js can.control.plugin.js can.dojo.js can.dojo.min.js can.fixture.js can.jquery.js can.jquery.min.js can.model.queue.js can.mootools.js can.mootools.min.js can.object.js can.observe.attributes.js can.observe.backup.js can.observe.delegate.js can.observe.setter.js can.observe.validations.js can.util.string.js can.view.modifiers.js can.view.mustache.js can.yui.js can.yui.min.js can.zepto.js can.zepto.min.js
  • can.observe.backup.js

  • ¶
    /*!
     * CanJS - 1.1.6
     * http://canjs.us/
     * Copyright (c) 2013 Bitovi
     * Wed, 05 Jun 2013 18:03:00 GMT
     * Licensed MIT
     * Includes: can/observe/backup
     * Download from: http://canjs.com
     */
    (function(can) {
        var flatProps = function(a) {
            var obj = {};
            for (var prop in a) {
                if (typeof a[prop] !== 'object' || a[prop] === null || a[prop] instanceof Date) {
                    obj[prop] = a[prop]
                }
            }
            return obj;
        };
    
        can.extend(can.Observe.prototype, {
    
    
                backup: function() {
                    this._backupStore = this._attrs();
                    return this;
                },
    
    
                isDirty: function(checkAssociations) {
                    return this._backupStore && !can.Object.same(this._attrs(),
                        this._backupStore,
                        undefined,
                        undefined,
                        undefined, !! checkAssociations);
                },
    
    
                restore: function(restoreAssociations) {
                    var props = restoreAssociations ? this._backupStore : flatProps(this._backupStore)
    
                    if (this.isDirty(restoreAssociations)) {
                        this._attrs(props);
                    }
    
                    return this;
                }
    
            })
    
        return can.Observe;
    })(can);