Я создаю приложение, используя Angular / Electron . В компоненте Angular у меня есть метод - handleData()
- который определяет объект - просто прямые массивы, строки, числа и т. Д., Без асинхронных вызовов или чего-либо подобного. Свойства этого объекта затем используются для создания и заполнения шаблона с использованием *ngFor
и *ngIf
.
Во время разработки у меня есть кнопка в компоненте, которая при нажатии вызывает handleData()
напрямую, и все работает нормально - данные создаются, шаблон обновляется, чтобы отразить это. Когда все настроено так, я делаю простое изменение, так что сейчас нажатие кнопки отправляет сообщение через IpcRenderer
(используя IpcService, как описано в этой статье ) ...
onButtonClick(){
this.ipc.on('test-response', (e)=>{
this.handleData();
});
this.ipc.send('test-channel');
}
Это поднято в моем main.js
, и я отвечаю на него, отправляя сообщение обратно ...
ipcMain.on('test-channel', (e)=>{
e.sender.send('test-response');
});
В этом случае handleData()
по-прежнему вызывается НО , теперь пользовательский интерфейс больше не обновляется. Я должен использовать ChangeDetectorRef
и вручную вызывать detectChanges
каждый раз, когда я обновляю свойство, связанное с шаблоном, с помощью *ngIf
или *ngFor
.
Итак, мой вопрос: чем отличается вызов метода в обратном вызове IPC от прямого вызова?
Это синхронизация / асинхронность? Зоны? Объем проблемы?
Мысли с радостью приняты.
Приветствия всем