2015-01-13 4 views
0

Я пытаюсь сбросить поле чисел так, чтобы оно отображало пустое текстовое содержимое, когда всплывающее окно вызывается снова. В моей нынешней ситуации у меня есть счетчик времени, то есть часы. Если я установил это, скажем, 12, если я закрою всплывающее окно и снова откроюсь, по умолчанию будет 0, а не пустой текст, который будет установлен на «hh». Код ниже.ExtJs reset on numberfield undefined

xtype : 'numberfield', 
           itemId : 'HrItemId', 
           id : 'HrId', 
           width : 50, 
           emptyText : 'hh', 
           maxValue : 23, 
           minValue : 0, 
           maxLength : 2, 
           enforceMaxLength : true, 
           listeners : { 
            change : function(textField, newValue, oldValue,eOpts) { 
             if (newValue < 0 || newValue > 23) { 
              checkMaxValue('vfcHoldHrItemId'); 
             } else { 
              me.PopupWindow.queryById('continueButton').enable(); 
             } 
            } 
           } 

me.PopupWindow.queryById('HrItemId').setValue(0); // works, and shows in Firefox debugger as an object 
me.PopupWindow.queryById('HrItemId').reset(); // shows in Firefox debugger as undefined 
+0

какая версия extjs используется? – Chetan

+0

Это 4.1.3. Я верю. –

ответ

0

Прежде всего, убедитесь, что me.PopupWindow.queryById('HrItemId') действительно возвращает ожидаемое поле номера. Поля чисел имеют метод reset, так как Ext 1, поэтому единственный способ, которым он «стал» неопределенным, состоит в том, что вы не вызываете его на поле номера.

Есть еще одна проблема, которую я вижу в приведенном выше коде, и что вы используете идентификаторы на компонентах. Это плохо или лучше сказать смертельную практику, поскольку иды распространяются вплоть до html-разметки. Идентификаторы Html должны быть уникальными на странице.

Это означает, что если у вас есть окно с формой, а поля и поля имеют идентификаторы, у вас не должно быть двух экземпляров этого окна. Если вы совершаете непредсказуемое поведение.

+0

Он определенно возвращает ожидаемое поле, так как я могу назвать функцию setValue на нем. Эти две строки кода отображаются в отображаемом порядке. Я читал, поскольку я видел что-то об reset() не работает, если поле не было создано, поэтому я устанавливал его перед сбросом его в качестве теста. Набор работает отлично. Сброс не установлен. К сожалению, это не дизайнерское решение вне моего контроля. :) –

+0

Ну, если поле не существует (не создается экземпляр), никакие методы не могут работать. Но тогда setValue тоже не сработает. Любое переопределение? Или ошибка в Ext - но я не верю в это, перезагрузка настолько ясна, что она сломает все. – Saki

+0

Ничего не отменено. Это обычное числовое поле, ничего лишнего. Определенно получить правильный компонент, как я бросил этот код для проверки. var windows = me.vfcHoldPopupWindow.queryById ('vfcHoldHrItemId'); console.log (windows.getId()); –