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.
71 lines
1.7 KiB
71 lines
1.7 KiB
/** |
|
* window.resize 控制器 |
|
* |
|
* Created by GUY on 2015/6/24. |
|
* @class |
|
*/ |
|
BI.ResizeController = BI.inherit(BI.Controller, { |
|
|
|
init: function () { |
|
this.resizerManger = {}; |
|
}, |
|
|
|
_initResizeListener: function () { |
|
var self = this; |
|
this.resizeHandler = BI.debounce(function (ev) { |
|
self._resize(ev); |
|
}, 30); |
|
if ("onorientationchange" in _global) { |
|
_global.onorientationchange = this.resizeHandler; |
|
} else { |
|
BI.Widget._renderEngine.createElement(_global).resize(this.resizeHandler); |
|
} |
|
}, |
|
|
|
_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); |
|
} |
|
}); |
|
}, |
|
|
|
add: function (name, resizer) { |
|
var self = this; |
|
BI.isNull(this.resizeHandler) && this._initResizeListener(); |
|
|
|
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; |
|
} |
|
});
|
|
|