| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-util-Bindable'>/**</span> * This class is used as a mixin. * * This class is to be used to provide basic methods for binding/unbinding stores to other * classes. In general it will not be used directly. */Ext.define('Ext.util.Bindable', {    <span id='Ext-util-Bindable-method-bindStore'>    /**</span>     * Binds a store to this instance.     * @param {Ext.data.AbstractStore/String} [store] The store to bind or ID of the store.     * When no store given (or when `null` or `undefined` passed), unbinds the existing store.     * @param {Boolean} [initial=false] True to not remove listeners from existing store.     */    bindStore: function(store, initial){        var me = this,            oldStore = me.store;                if (!initial && me.store) {            // Perform implementation-specific unbinding operations *before* possible Store destruction.            me.onUnbindStore(oldStore, initial);            if (store !== oldStore && oldStore.autoDestroy) {                oldStore.destroyStore();            } else {                me.unbindStoreListeners(oldStore);            }        }        if (store) {            store = Ext.data.StoreManager.lookup(store);            me.bindStoreListeners(store);            me.onBindStore(store, initial);        }        me.store = store || null;        return me;    },    <span id='Ext-util-Bindable-method-getStore'>    /**</span>     * Gets the current store instance.     * @return {Ext.data.AbstractStore} The store, null if one does not exist.     */    getStore: function(){        return this.store;    },    <span id='Ext-util-Bindable-method-unbindStoreListeners'>    /**</span>     * Unbinds listeners from this component to the store. By default it will remove     * anything bound by the bindStoreListeners method, however it can be overridden     * in a subclass to provide any more complicated handling.     * @protected      * @param {Ext.data.AbstractStore} store The store to unbind from     */    unbindStoreListeners: function(store) {        // Can be overridden in the subclass for more complex removal        var listeners = this.storeListeners;        if (listeners) {            store.un(listeners);        }    },    <span id='Ext-util-Bindable-method-bindStoreListeners'>    /**</span>     * Binds listeners for this component to the store. By default it will add     * anything bound by the getStoreListeners method, however it can be overridden     * in a subclass to provide any more complicated handling.     * @protected      * @param {Ext.data.AbstractStore} store The store to bind to     */    bindStoreListeners: function(store) {        // Can be overridden in the subclass for more complex binding        var me = this,            listeners = Ext.apply({}, me.getStoreListeners());                    if (!listeners.scope) {            listeners.scope = me;        }        me.storeListeners = listeners;        store.on(listeners);    },    <span id='Ext-util-Bindable-method-getStoreListeners'>    /**</span>     * Gets the listeners to bind to a new store.     * @protected     * @return {Object} The listeners to be bound to the store in object literal form. The scope     * may be omitted, it is assumed to be the current instance.     */    getStoreListeners: Ext.emptyFn,    <span id='Ext-util-Bindable-method-onUnbindStore'>    /**</span>     * Template method, it is called when an existing store is unbound     * from the current instance.     * @protected     * @param {Ext.data.AbstractStore} store The store being unbound     * @param {Boolean} initial True if this store is being bound as initialization of the instance.     */    onUnbindStore: Ext.emptyFn,    <span id='Ext-util-Bindable-method-onBindStore'>    /**</span>     * Template method, it is called when a new store is bound     * to the current instance.     * @protected     * @param {Ext.data.AbstractStore} store The store being bound     * @param {Boolean} initial True if this store is being bound as initialization of the instance.     */    onBindStore: Ext.emptyFn    });</pre></body></html>
 |