Ответ 1
Я просто беру fabric.js
из здесь и заменяюсь моим, и все работает.
Я использую этот код для добавления textbox
в canvas
с помощью fabric js
,
var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
left: getCardLeft() + 100,
top: getCardTop() + 10,
width: 200,
height: 20,
fontFamily: 'Helvetica',
fill: getColorPickerForegroundColor(),
fontWeight: '',
fontSize: parseInt('25'),
originX: 'center',
hasRotatingPoint: true,
centerTransform: true,
});
canvas.add(textSample);
Что успешно добавить textbox
в canvas
.
Теперь, если я попытаюсь сделать это bold
, используя эту команду
canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();
Работа, но когда вы пытаетесь изменить его на нормальный,
canvas.getActiveObject().set("fontWeight", "");
canvas.getActiveObject().set("fontWeight", "100");
canvas.getActiveObject().set("fontWeight", "normal");
canvas.renderAll();
не работает.
Я не знаю, где проблема. Я делаю что-то не так здесь?
Его поведение странное Вы можете увидеть это здесь.
посетите первый здесь Затем посетите здесь
Я просто беру fabric.js
из здесь и заменяюсь моим, и все работает.
Следующий код работает для меня. Я вижу два момента, в которых я мог не сработать на вашей стороне:
canvas.renderAll();
Нужно правильно переиздавать. А также:
canvas.setActiveObject(textSample);
был необходим для меня. Потому что иначе:
canvas.getActiveObject();
был undefined. Теперь полный пример рабочего кода:
var canvas = new fabric.Canvas('c', { selection: false });
var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
left: 300,
top: 50,
width: 200,
height: 20,
fontFamily: 'Helvetica',
fill: "#fac",
fontWeight: '100',
fontSize: parseInt('25'),
originX: 'center',
hasRotatingPoint: true,
centerTransform: true,
});
canvas.add(textSample);
canvas.setActiveObject(textSample);
canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();
canvas.getActiveObject().set("fontWeight", "100");
canvas.renderAll();
Надеюсь, что это поможет.