Я пытаюсь отредактировать текст внутри фигуры двойным щелчком мыши и перенести текст на текущую ширину фигуры, автоматически увеличивая высоту. По сути, я хочу, чтобы при редактировании текста дважды щелкнул текст.
Я использую различные части примера кода с минимальными изменениями, чтобы попытаться достичь того, чего я добиваюсь, поэтому большая часть этого не мой код.
В настоящее время у меня есть пользовательская фигура со слушателем для двойного щелчка, которая затем вызывает функцию для изменения текста, это использует функцию joint.util.breakText:
this.textEditor = new joint.ui.TextEditor({ text: text });
this.textEditor.render(this.paper.el);
this.textEditor.on('text:change', function(newText) {
var cell = cellViewUnderEdit.model;
cell.prop(cellViewUnderEdit.textEditPath, joint.util.breakText(newText, { width: cell.attributes.size.width }));
if (cellViewUnderEdit.optionId) {
this.textEditor.options.text = cellViewUnderEdit.$('.option.option-' + cellViewUnderEdit.optionId + ' .option-text')[0];
}
}, this);
cellViewUnderEdit = cellView;
// Prevent dragging during inline editing.
cellViewUnderEdit.setInteractivity(false);
У меня также есть слушатель пользовательской формы, который запускает изменения и соответственно изменяет размер:
joint.shapes.special.MyShape = joint.dia.ElementView.extend({
initialize: function() {
joint.dia.ElementView.prototype.initialize.apply(this, arguments);
this.autoresize();
this.listenTo(this.model, 'change:details', this.autoresize, this);
},
autoresize: function() {
var dim = joint.util.measureText(this.model.get('details'), {
fontSize: this.model.attr('text/fontSize')
});
this.model.resize(dim.width + 5, dim.height + 5);
}
});
У меня действительно странное поведение, когда пробелы игнорируются для первой строки, и я не могу добавить новые строки самостоятельно. Текстовый курсор также перемещается в верхний левый угол текста и никогда не находится в правильном положении ... в противном случае он работает хорошо! :)
Спасибо за любую помощь !!