Событие change не генерируется при вызове Ext.form.field.Number.setValue()
Для события change (http://docs.sencha.com/extjs/5.1/5.1...r-event-change) в документации написано следующее:
Цитата:
Если я правильно понимаю, то при вызове setValue() это событие должно генерироваться (при условии, что новое значение не равно старому, конечно). Но на практике событие change при вызове setValue() не генерируется. Почему? Как сделать, чтобы генерировалось? |
Посмотрел код, который может оказать влияние на результат.
Предполагаю, что либо поле убито, либо значения одинаковые: !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 |
Хмм... странно, провел тест:
!suspendCheckChange= true !isDestroyed= true didValueChange= true ладно, буду копать свой код... похоже где-то что-то не так связалось... |
Разобрался!!!
Оказывается надо было выставить опцию decimalPrecision: 10 itemId: "radius", xtype: "numberfield", fieldLabel: "Радиус", labelWidth: 50, step: 10, value: 100, decimalPrecision: 10 там по умолчанию decimalPrecision равен 2, а у меня радиус из формулы выходил со всеми знаками после запятой. В итоге иногда похоже старое значение равнялось новому... хотя didValueChange всегда равнялся = true... что весьма странно... В общем когда я выставил 10 то все заработало. И зачем там стоит по умолчанию 2??? |
Цитата:
|
"Соединяю Ext JS 5, Zend Framework 2 и PostreSQL 9 на IDE Cloud9. "
гм... соединяю java + extjs + oracle на netbeans. :-) |
Цитата:
а вообще интересно кто на чем пишет для расширения кругозора |
Часовой пояс GMT +3, время: 22:14. |