У меня есть компонент освещения, который будет вызывать метод контроллера при обновлении. Ниже приведен код компонента, контроллера и помощника: Код компонента:
<force:recordData aura:id="forceRecord"
recordId="{!v.recordId}"
layoutType="FULL"
targetRecord="{!v._record}"
targetFields="{!v.simpleRecord}"
targetError="{!v._error}"
mode="EDIT"
recordUpdated="{!c.recordUpdated}" />
Код контроллера:
({
doInit : function(component, event, helper) {
helper.checkStatus(component,event,helper);
},
recordUpdated : function(component, event, helper) {
var changeType = event.getParams().changeType;
console.log('changeType IS: '+ changeType);
// changeType = LOADED -- when record is created.
if (changeType === "ERROR") { /* handle error; do this first! */ }
else if (changeType === "LOADED") {
}
else if (changeType === "REMOVED") { /* handle record removal */ }
else if (changeType === "CHANGED") {
var recordId = component.get("v.recordId");
console.log('Updated record Id: '+ recordId);
helper.callAnotherMethod(component, event, helper);
}
}
})
Предположим, я получаю доступ к платежу (Id в URL: a001l000005JP5mAAG) страницу в браузере, изменил какое-то поле в ней и сохранил. вызывается метод recordUpdated, и он входит в условие ИЗМЕНЕНО.
Я открываю другой платеж (Id в URL: a001l000005HK5mBBK) в том же окне браузера, изменяю значение поля в этом платеже и сохраняю его. В этот момент метод recordUpdated вызывается дважды: один раз для старого платежа и один раз для нового платежа.
Если я смотрю в консоль браузера, я вижу журнал, как показано ниже:
changeType IS: CHANGED
Updated record Id: a001l000005JP5mAAG
changeType IS: CHANGED
Updated record Id: a001l000005HK5mBBK
Not уверен, почему он звонит дважды и как его остановить? Кто-нибудь может объяснить мне, почему он так себя ведет и как это остановить?
Удивительно, если я открываю больше платежей в том же окне браузера и изменяю их, он продолжает добавлять событие recordUpdated для текущего платежа, а также вызывает событие обновления предыдущих платежей с их идентификатором