Closed shift-reality closed 5 years ago
нет, все контролы создаются собственными "силами". Все, чт предоставляется, это getData, putData и добавление контрола в ноду или инпут.
события создания/удаления ноды/соединения находятся в одной, так называемой, шине событий - это Editor. В нем можно указать свои события через bind(<имя события>)
, но это не похоже на ваш случай, так как контрол изолирован в ноде, а значит она может подписаться на его события, а он при изменении значения будет эмитить событие.
Есть вот такой пример http://jsfiddle.net/Ni55aN/6tLo2nbe/
Спасибо за пример... но что-то похоже на костыль? как по мне..?
Еще спросить хотел, а есть где-то эти стили с картинки: https://github.com/retejs/rete/issues/1 ?
нет, это скрин из Blender
но что-то похоже на костыль? как по мне..?
уточнаяйте вашу задачу и убирайте лишнее
уточняю: мне нужно сделать автосохранение в json, если что-то (сдвиг ноды, удаление, связи, смена значений input и т.д.) где-то изменилось...
Может есть решение из коробки?
Сделали примерно так:
"nodecreated", "noderemoved", "connectioncreated", "connectionremoved"
editor.on(autosaveEvents, async function () { await se.req('put', await se.editor.toJSON()); });
Но, для InputControl события не хватило...
Вы лучше знаете свою архитектуру, посоветуйте, как лучше сделать, чтобы в итоге не костыль получился?...
Тогда глобальное событие сойдет
editor.bind('change');
editor.on("nodecreated noderemoved connectioncreated connectionremoved", () => {
editor.trigger('change')
});
editor.on('change', () => {
// to json
});
и соответственно внутри контрола при изменении: this.emitter.trigger('change')
Работает, спасибо!
Есть какое-то событие, типа controlupdatedvalue? Поясню: есть InputControl (по названию понятно чем он занимается), есть события создания/удаления ноды/соединения, необходимо как-то добавить событие обновления значения... Подскажите, плиз