Я пытаюсь создать компонент dataview с панелью и кнопкой переключения. Внутренние состояния кнопки переключения задаются полем в хранилище и при нажатии кнопки переключения необходимо вызвать определенные функции для обновления состояния в backend. Но поскольку я инициализирую состояние кнопки переключения из бэкэнд при загрузке страницы , событие изменения вызывается на самом запуске, из-за чего кнопка переключается бесконечно, вызывая логику внутри части CHANGE EVENT спина к спине. Просьба помочь как о том, как предотвратить событие изменения при вызове на загрузку страницы и вызываться только при нажатии пользователем кнопки переключения?Событие изменения компонента Dataview выполняется в бесконечном цикле
/**
var togglevalue = 0, count = 0;
Ext.define('PMDQ.view.EquipmentDVItem', {
extend: 'Ext.dataview.component.DataItem',
requires: [
'Ext.field.Toggle'
],
alias: 'widget.equipmentdvitem',
config: {
layout: 'fit',
cls: 'cartitem-cls',
dataMap: {
// Map product's data to dataItem setter
getEqpmntdvinneritem: {
setDisplayName: 'ChecklistText'
},
getTogglebutton: {
setValue: "ItemValue"
}
},
eqpmntdvinneritem: {
flex: 2
},
togglebutton: {
itemId: "itemspinnerfield",
flex: 1,
name: 'single_toggle'
},
layout: {
type: 'hbox',
align: 'center'
}
},
applyEqpmntdvinneritem: function (config) {
console.log(PMDQ.view.EquipmentDVInnerItem);
return Ext.factory(config,
PMDQ.view.EquipmentDVInnerItem,
this.getEqpmntdvinneritem());
},
updateEqpmntdvinneritem: function (newItemLine, oldItemLine) {
if (oldItemLine) {
this.remove(oldItemLine);
}
if (newItemLine) {
// Attach lines to DataView
newItemLine.on('tap', this.onTogglebuttonTap, this);
this.add(newItemLine);
}
},
applyTogglebutton: function (config) {
return Ext.factory(config, Ext.field.Toggle, this.getTogglebutton());
},
updateTogglebutton: function (newTogglebutton, oldTogglebutton) {
if (oldTogglebutton) {
this.remove(oldTogglebutton);
}
if (newTogglebutton) {
// add an event listeners for the `tap` event onto the new button, and tell it to call the onNameButtonTap method
// when it happens
newTogglebutton.on('load', this.onTogglebuttonTap, this);
newTogglebutton.on('change', this.onTogglebuttonChange, this);
this.add(newTogglebutton);
}
},
onTogglebuttonTap: function() {
var record = this.getRecord(), me = this;
count = 0;
},
onTogglebuttonChange: function (slider, newValue, oldValue, thumb) {
var record = this.getRecord(), me = this , store = me.getStore();
if (oldValue == 0 && newValue == 1) {
var val = record.get("InputAllowed");
if (val == "X") {
alert("onMPValueEnteronMPValueEnter" + count);
me.fireEvent("onMPValueEnter", this, record);
togglevalue = 0;
}
else {
me.fireEvent("onToggleSave", this, oldValue, newValue, record);
togglevalue = 0;
}
}
else if (oldValue == 1 && newValue == 0) {
alert("onToggleSave Off" + count);
me.fireEvent("onToggleSave", this, oldValue, newValue, record);
togglevalue = 0;
}
}
});