gpt4 book ai didi

javascript - ExtJS:如何从覆盖中调用原始方法?

转载 作者:行者123 更新时间:2023-11-30 16:12:15 26 4
gpt4 key购买 nike

如何从覆盖方法中调用原始方法?

我有一个组合框,我正在从它的存储中删除其中一个值,以防止用户选择它,因为我们不再支持该值中的该值。如果组合框收到该值,我仍然希望该值能够正确显示,因为从技术上讲,它不是无效值;它只是不再受支持。为了实现我的目标,我想覆盖 getDisplayValue() 方法,这样,如果组合框收到的值不再存在于商店中,我希望覆盖方法返回正确的字符串,但如果它收到任何其他值,我希望原始方法来处理它,如下所示:

myCombobox = Ext.create("Ext.form.field.ComboBox",
{
// <snip><snip>
getDisplayValue: function()
{
if (this.value == 'removedValue')
{
return 'Correct Text';
}
else
{
// What do I do here to call original getDisplayValue() and return its returned value?
}
}
});

更新
有人发布了一个答案说使用 this.callParent(arguments);但是在我发表评论说那行不通之后,他们删除了答案。我得到了覆盖函数来做我想在其他情况下做的事情,方法是从被覆盖的函数(我从 Sencha 的网站上获得)中放入源代码,但我宁愿使用一个涉及某种方式实际调用的解决方案如果可能的话,该函数会被替代,因为它的源代码可能会在以后的 ExtJS 更新中发生变化(例如,为了修复错误),而我的将保持静态。

(请注意,我稍微更改了代码以查看值而不是 rawValue,因为后者不一定在调用 getDisplayValue() 时定义。)

最佳答案

即使问题已得到解答,这里还有另一种更好的方法来解决您的问题。这就是 ExtJS 在其某些内部类中调用父方法的方式。

Ext.create("Ext.form.field.ComboBox", { 
getDisplayValue: function() {
if (this.rawValue == 'removedValue') {
// your logic
return;
}
return Ext.form.field.ComboBox.prototype.getDisplayValue.call(this);
}
});

关于javascript - ExtJS:如何从覆盖中调用原始方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36070525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com