Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.07.2015, 08:43
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Событие change не генерируется при вызове Ext.form.field.Number.setValue()
Для события change (http://docs.sencha.com/extjs/5.1/5.1...r-event-change) в документации написано следующее:

Цитата:
The value of a field is checked for changes when the field's setValue method is called and...

Если я правильно понимаю, то при вызове setValue() это событие должно генерироваться (при условии, что новое значение не равно старому, конечно).

Но на практике событие change при вызове setValue() не генерируется.

Почему? Как сделать, чтобы генерировалось?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2015, 13:20
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Посмотрел код, который может оказать влияние на результат.

Предполагаю, что либо поле убито, либо значения одинаковые:

!me.isDestroyed

String(value1) === String(value2)


setValue: function(value) {
        var me = this;
        me.value = value;
        me.checkChange();
        return me;
    },

    checkChange: function() {
        var me = this,
            newVal, oldVal;
            
        if (!me.suspendCheckChange) {
            newVal = me.getValue();
            oldVal = me.lastValue;
                
            if (!me.isDestroyed && me.didValueChange(newVal, oldVal)) {
                me.lastValue = newVal;
                me.fireEvent('change', me, newVal, oldVal);
                me.onChange(newVal, oldVal);
            }
        }
    },

    didValueChange: function(newVal, oldVal){
        return !this.isEqual(newVal, oldVal);
    },

    isEqual: function(value1, value2) {
        return String(value1) === String(value2);
    },


Либо приостановлена проверка изменений:

!me.suspendCheckChange

Последний раз редактировалось novikov, 31.07.2015 в 13:22.
Ответить с цитированием
  #3 (permalink)  
Старый 01.08.2015, 01:16
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Хмм... странно, провел тест:
!suspendCheckChange= true !isDestroyed= true didValueChange= true


ладно, буду копать свой код... похоже где-то что-то не так связалось...
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 01.08.2015, 01:31
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Разобрался!!!

Оказывается надо было выставить опцию decimalPrecision: 10

itemId: "radius",
xtype: "numberfield",
fieldLabel: "Радиус",
labelWidth: 50,
step: 10,
value: 100,
decimalPrecision: 10


там по умолчанию decimalPrecision равен 2, а у меня радиус из формулы выходил со всеми знаками после запятой. В итоге иногда похоже старое значение равнялось новому... хотя didValueChange всегда равнялся = true... что весьма странно...

В общем когда я выставил 10 то все заработало. И зачем там стоит по умолчанию 2???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #5 (permalink)  
Старый 01.08.2015, 01:34
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
хотя didValueChange всегда равнялся = true... что весьма странно...
Понял почему didValueChange выдывал true всегда. На его вход я подавал все знаки после запятой, а внутри numberfield он обрезался до двух и выдавал false. Вот засада-то!!! Два дня к черту под хвуост
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2015, 14:38
Аспирант
Отправить личное сообщение для bastrakov Посмотреть профиль Найти все сообщения от bastrakov
 
Регистрация: 27.03.2015
Сообщений: 31

"Соединяю Ext JS 5, Zend Framework 2 и PostreSQL 9 на IDE Cloud9. "

гм... соединяю java + extjs + oracle на netbeans. :-)
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2015, 19:22
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
java + extjs + oracle на netbeans.
все мы здесь ради extjs))))

а вообще интересно кто на чем пишет
для расширения кругозора
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отменить событие onchange при отправке формы? Petja Элементы интерфейса 1 10.04.2014 18:10
Событие click срабатывает только при повторном нажатии (через ON) loko jQuery 8 16.01.2014 10:35
событие при редактирование данных в грид demi ExtJS 1 20.08.2013 11:37
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05
Не отрабатывает событие onmouseout при внедрении нового слоя ilshat Элементы интерфейса 3 28.07.2008 06:27