Хобрук: Ваш путь к мастерству в программировании

Uncaught TypeError: невозможно вызвать метод «формат» неопределенного

Я использую 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);
        }
    }
});
10.04.2012

  • Хм... в сообщении говорится, что Exp или Exp.String не определены, поэтому формат не может быть вызван. Можете ли вы узнать, что такое undefined? Вы включили extjs на свою страницу? 10.04.2012
  • Привет @Tobi, мой файл js - это Metadata.js, и я не включил Ext явно. Я использую приведенный выше код внутри метода Ext.extend(); Подскажите, пожалуйста, как явно включить Ext. 10.04.2012
  • Что-то вроде этого: ‹script type=text/javascript src=../../adapter/ext/ext-base.js›‹/script› 10.04.2012
  • Привет @Tobi, спасибо за ответ, он отлично работает, удалив ext и используя только String.format. 10.04.2012
  • Ты прав. Это тоже сработает :-) 10.04.2012

Ответы:


1

На всякий случай, если вам интересно, почему он работает со String вместо Ext.String, это потому, что Ext добавляет метод к объекту String JavaScript.

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

Эти функции доступны как статические методы объекта String JavaScript.

Таким образом, все другие функции для String, которые определяет Ext (переключение, обрезка и т. д.), также будут находиться в объекте String, а не в Ext.String.

Надеюсь, что это поможет понять, почему это не сработало, и на будущее.

10.04.2012
  • Привет @therat, приведенный выше код работает, когда я ввожу что-то в текстовое поле и удаляю в первый раз, тогда только он работает. что не так в коде. почему он не фильтрует значения в первый раз 11.04.2012
  • Новые материалы

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

    Расистский и сексистский робот, обученный в Интернете
    Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..