根据这个问题:Multiple file upload with extra inputText我可以通过这种方式使用widgetVar覆盖PrimeFaces元素的JavaScript函数:
PF('fileUpload').jq.fileupload({
add: function(e, data) {
...
}
});
现在,我尝试覆盖DataTable中的函数,无法理解如何引用它?而且,PF(')从chrome调试器控制台返回undefined,所以我无法调试它。我怀疑这是范围的问题,但不知道如何解决它。
答案 0 :(得分:12)
你可以使用原型,
例如,覆盖bindEditEvents
看起来像这样
PrimeFaces.widget.DataTable.prototype.bindEditEvents = function() {
....
}
答案 1 :(得分:2)
还有更多解决方案。取决于你想要走多远。
就我而言,我打算扩展DataScroller的功能。
尽管回答你的问题已经太迟了,但我希望下面的解决方案有助于其他人:
解决方案#1 (扩展当前方法并添加自己的方法)
PrimeFaces.widget.DataScroller = PrimeFaces.widget.BaseWidget.extend({
init: function(cfg) {
this._super(cfg);
// only for widget with widgetVar="yourWidgetVar"
if(cfg.widgetVar === 'yourWidgetVar') {
this.yourCustomMethod();
}
},
yourCustomMethod: function() {
// do whatever you prefer here
}
});
解决方案#2 (扩展当前方法)
PF('yourWidgetVar').init = function() {
// do whatever you prefer here
// call the generic implementation
PrimeFaces.widget.DataScroller.prototype.init.call(this);
};