]>
git.proxmox.com Git - extjs.git/blob - extjs/packages/core/src/mixin/Hookable.js
4 Ext
.define('Ext.mixin.Hookable', {
11 bindHook: function(instance
, boundMethod
, bindingMethod
, preventDefault
, extraArgs
) {
13 bindingMethod
= boundMethod
;
16 var boundFn
= instance
[boundMethod
],
19 if (boundFn
&& boundFn
.hasOwnProperty('$binding')) {
20 binding
= boundFn
.$binding
;
21 if (binding
.bindingMethod
=== bindingMethod
&& binding
.bindingScope
=== this) {
26 instance
[boundMethod
] = fn = function() {
27 var binding
= fn
.$binding
,
28 scope
= binding
.bindingScope
,
29 args
= Array
.prototype.slice
.call(arguments
);
34 args
.push
.apply(args
, extraArgs
);
37 if (!binding
.preventDefault
&& scope
[binding
.bindingMethod
].apply(scope
, args
) !== false) {
38 return binding
.boundFn
.apply(this, arguments
);
42 preventDefault
: !!preventDefault
,
44 bindingMethod
: bindingMethod
,
51 unbindHook: function(instance
, boundMethod
, bindingMethod
) {
53 bindingMethod
= boundMethod
;
56 var fn
= instance
[boundMethod
],
57 binding
= fn
.$binding
,
58 boundFn
, currentBinding
;
61 boundFn
= binding
.boundFn
;
63 if (binding
.bindingMethod
=== bindingMethod
&& binding
.bindingScope
=== this) {
65 currentBinding
.boundFn
= boundFn
;
68 instance
[boundMethod
] = boundFn
;
74 currentBinding
= binding
;
75 binding
= boundFn
.$binding
;