У меня возникли проблемы с использованием jQuery dotdotdot plugin в моем приложении Ember.js. Мне нужно запустить плагин на элементе всякий раз, когда его содержимое изменяется, чтобы он мог пересчитать новый контент с помощью многоточия. Проблема в том, что Ember.js не предупреждает меня, когда отображается часть вида, только основного элемента. Поэтому, если модель меняет и обновляет мою ячейку, чтобы иметь значительно больше текста, у меня нет возможности запускать плагин для его очистки.Событие триггера, когда часть шаблона повторно отображается
Есть ли способ быть предупрежденным, когда выражение в шаблоне повторно отображается? Я мог посмотреть значение свойства на модели, но у меня есть десятки коробок на экране из десятков разных моделей, поэтому я думаю, что это будет довольно неэффективно (и медленная моя страница будет уменьшаться по мере того, как она станет больше). Мое текущее мышление будет ругать помощник Рулей:
Ember.Handlebars.helper('dotdotdot', function(str) {
var id = generateRandomId();
var content = `<span id="${id}">${str}<span>`;
Em.run.later(() => $(`#${id}`).dotdotdot());
return new Handlebars.SafeString(content);
});
Это похоже на неправильном использовании руля помощника, хотя.
Вы можете просто использовать 'CSS' для этого ... У вас меньше головной боли. Проверьте это: http://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ Это отлично работает, если вы просто хотите содержать текст внутри 'DIV' или что-то еще. –
Функциональность «text-overflow» работает только с одной строкой текста, и у меня есть несколько строк, поэтому решение только для CSS не будет работать для меня. (Я знаю, что для этого есть некоторые обходные пути, но никто не особенно хорош.) – GJK
А, хорошо, я должен был более внимательно рассмотреть ваши требования. Взгляните на эту статью, если вы ее не видели: http://css-tricks.com/line-clampin/ Есть несколько, казалось бы, хороших решений CSS для многострочных, а затем и некоторых JS-решений внизу. Не уверен, что вы видели clamp.js? –