我正在覆盖RichFaces PopupPanel.doResizeOrMove方法,如下所示:
(function() {
var richfacesUiPopupPanelDoResizeOrMove = RichFaces.ui.PopupPanel.prototype.doResizeOrMove;
RichFaces.ui.PopupPanel.prototype.doResizeOrMove = function(diff) {
richfacesUiPopupPanelDoResizeOrMove.call(this, diff);
};
})();
最终我想添加一些额外的功能,因此覆盖。但是使用上面的代码,我期待与原始方法相同的行为。
但是,当我开始移动时,PopupPanel会快速移出视口。这是一个已知的问题,javascript覆盖通过调用(我通过应用获得相同的行为)或一些RichFaces特定的问题?我做错了什么?
由于
答案 0 :(得分:0)
doResizeOrMove
方法有一个返回值,在您的实现中会丢失。它应该是
return richfacesUiPopupPanelDoResizeOrMove.call(this, diff);
虽然重写原型可行,但您可能需要查看$.extend()
,这就是我们用来构建组件的内容。
(function() {
var richfacesUiPopupPanelDoResizeOrMove = RichFaces.ui.PopupPanel.prototype.doResizeOrMove;
$.extend(RichFaces.ui.PopupPanel.prototype, (function(options) {
return {
doResizeOrMove: function(diff) {
return richfacesUiPopupPanelDoResizeOrMove.call(this, diff);
}
};
})());
})();