【问题标题】:Uncaught TypeError: Cannot call method 'format' of undefined未捕获的类型错误:无法调用未定义的方法“格式”
【发布时间】:2012-04-11 03:36:53
【问题描述】:

我使用的是 extjs 3.4 版,但在这一行出现一个错误:

var query = new RegExp(Ext.String.format('field1', e.query.replace(/\?/g, '[A-Za-z0-9]'))); 
like--Uncaught    TypeError: Cannot call method 'format' of undefined

我添加了这样的监听器,如果有任何错误请告诉我。

this.findById('field1').addListener({
    beforequery: function (e) {
        if (e.query && e.query.indexOf('?') != -1) {
            e.cancel = true;
            var query = new RegExp(Ext.String.format('field1', e.query.replace(/\?/g, '[A-Za-z0-9]')));
            this.expand();
            this.store.clearFilter(true);
            this.store.filter(this.displayField, query);
        }
    }
});

【问题讨论】:

  • 嗯...消息说,“Exp”或“Exp.String”未定义,因此无法调用“format”。你能找出什么是未定义的吗?你的页面中是否包含了 extjs?
  • 嗨 @Tobi 我的 js 文件是 Metadata.js,我没有明确包含 Ext。我在 Ext.extend 方法()中使用上面的代码;你能告诉我如何明确地包含 Ext。
  • 类似这样的东西:
  • 嗨 @Tobi 感谢您的回复,通过删除 ext 并仅使用 String.format,它可以正常工作。
  • 你是对的。这也将起作用:-)

标签: extjs extjs3


【解决方案1】:

如果您想知道为什么它使用 String 而不是 Ext.String,那是因为 Ext 正在将方法添加到 JavaScript String 对象。

http://docs.sencha.com/ext-js/3-4/#!/api/String

这些函数可作为 JavaScript 上的静态方法使用 字符串对象。

因此,Ext 定义的所有其他 String 函数(切换、修剪等)也将在 String 对象上而不是 Ext.String 上。

希望对为什么它不起作用以及对未来有所帮助。

【讨论】:

  • 嗨@therat,当我在文本字段中输入内容并第一次删除时,上面的代码正在工作,然后只有它工作。代码有什么问题。为什么它第一次不过滤值
猜你喜欢
  • 2013-08-31
  • 2011-11-12
  • 2013-09-14
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多