forked from fanruan/fineui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.7 KiB
69 lines
1.7 KiB
/** |
|
* window.resize 控制器 |
|
* |
|
* Created by GUY on 2015/6/24. |
|
* @class |
|
*/ |
|
BI.ResizeController = BI.inherit(BI.Controller, { |
|
_defaultConfig: function () { |
|
return BI.extend(BI.ResizeController.superclass._defaultConfig.apply(this, arguments), {}); |
|
}, |
|
|
|
_init: function () { |
|
BI.ResizeController.superclass._init.apply(this, arguments); |
|
var self = this; |
|
this.resizerManger = {}; |
|
var fn = BI.debounce(function (ev) { |
|
// if (BI.isWindow(ev.target)) { |
|
self._resize(ev); |
|
// } |
|
}, 30); |
|
BI.Widget._renderEngine.createElement(_global).resize(fn); |
|
}, |
|
|
|
_resize: function (ev) { |
|
BI.each(this.resizerManger, function (key, resizer) { |
|
if (resizer instanceof BI.$) { |
|
if (resizer.is(":visible")) { |
|
resizer.trigger("__resize__"); |
|
} |
|
return; |
|
} |
|
if (resizer instanceof BI.Layout) { |
|
resizer.resize(); |
|
return; |
|
} |
|
if (BI.isFunction(resizer)) { |
|
resizer(ev); |
|
return; |
|
} |
|
}); |
|
}, |
|
|
|
add: function (name, resizer) { |
|
var self = this; |
|
if (this.has(name)) { |
|
return this; |
|
} |
|
this.resizerManger[name] = resizer; |
|
return function () { |
|
self.remove(name); |
|
}; |
|
}, |
|
|
|
get: function (name) { |
|
return this.resizerManger[name]; |
|
}, |
|
|
|
has: function (name) { |
|
return this.resizerManger[name] != null; |
|
}, |
|
|
|
remove: function (name) { |
|
if (!this.has(name)) { |
|
return this; |
|
} |
|
delete this.resizerManger[name]; |
|
return this; |
|
} |
|
}); |