Bindable.html
4.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<!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>