fabri c. js в обработчике событий изменения текста не может получить доступ к тексту, обновленному программно - PullRequest
0 голосов
/ 24 января 2020
if (!canvas) {
    return;
}

const textbox = new fabric.Textbox("Start writing...", {
      width: 300,
      top: 10,
      left: 10,
      fill: "white",
});

canvas.add(textbox);

canvas.renderAll();

canvas.on("text:changed", e => {
    if (!canvas) {
        return;
    }

    const { target } = e;
    const { text } = target as fabric.Textbox;
    console.log("text", text);

});

У меня есть вышеуказанный код в одном из моих реактивных компонентов. При нажатии кнопки запускается приведенный выше код.

В какой-то другой части кода я обновляю текстовое поле, выполняя textbox.text = 'new Text';. new Text - это текст, динамически создаваемый пользователем.

Проблема в том, что когда пользователь обновляет текстовое поле в следующий раз, скажем, пользователь вводит букву s, я ожидаю text из const { text } = target as fabric.Textbox равный new Texts. Тем не менее, я получаю s, просто одну букву, которую пользователь набрал в следующем цикле.

Кто-нибудь знает, что происходит? Я подозревал, что это проблема с областью действия, но не могу ее решить.

Спасибо.

...