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

标签 javascript extjs extjs4.2

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

我有一个组合框,我正在从它的存储中删除其中一个值,以防止用户选择它,因为我们不再支持该值中的该值。如果组合框收到该值,我仍然希望该值能够正确显示,因为从技术上讲,它不是无效值;它只是不再受支持。为了实现我的目标,我想覆盖 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/

相关文章:

extjs - 在自定义 extjs 主题中包含现有的 CSS 文件

ExtJs 4.2.0.663 使用 Searchfield 导致异常 "PageMap asked for range which it does not have"

maven - 有没有办法在没有 Sencha CMD 的情况下缩小 ExtJS 应用程序?

javascript - 即时编辑 Facebook Like-Box Css?

javascript - 如何在 Vue 中将组件用作可重用模板?

java - 当 request.GetAttribute 为 null 时,如何从 textarea 中删除 null,以及如何从 servlet 修改标签的可见性

javascript - ExtJS:将预先存在的 div 包装到 Extjs 容器中

javascript - 详细信息页面 View 不显示 ionic 数据

php - ExtJS 4 网格 : display nested data models with associations

extjs - 网格面板中的列大小调整问题