2016-10-26 2 views
1

У меня есть текст D3, добавленный внутри прямоугольника, где значение текстового поля обновляется программно. Теперь мне нужно расширить ширину на основе длины текстового значения, но при этом сохранить ширину по умолчанию как минимальную ширину. Я попытался получить новую value.length и обновить ширину текста d3, как показано ниже.Обновить ширину текста D3 путем добавления новой ширины

var length = //length of the updated text value 
var elm = d3.selectAll("[id=s1]"); 
elm.attr('width', function(d) { return length; }); 

Это прекрасно работает, но когда я удаляю текст, текстовое поле D3 также полностью сжимается. Мне нужно сохранить ширину по умолчанию, а затем просто увеличить, если значение больше. есть идеи как это сделать?

ответ

1

Вы можете использовать ternary operator для проверки минимального значения:

elm.attr('width', function() { 
    return length < minimumValue ? minimumValue : length; 
}); 

Где minimumValue это, конечно, ваше минимальное значение.

+0

Привет, Херардо, я пробовал это, но он всегда возвращает значение длины независимо от условия ... Любая идея, почему? – user2894296

+0

Это не имеет никакого смысла. Вставьте точный код, который вы используете. –

+0

var elms = d3.selectAll ("[id = s1]"); var minValue = 130 + 'px'; var dynamic = длина + 'px'; elm.attr ('width', function() { return dynamic user2894296