I need to (dynamically) render text inside fixed-length buttons in a ng-repeat block.
I would like to get DOM rendered text width (to be able to truncate it, and add an ellipsis entity...).
This is my html:
<span ng-repeat="(key, item) in players" limit-text-length max-len="100">
<div class="btn">
<div id="player-{{key}}">{{item.name}}</div>
</div>
</span>
This is my current directive:
app.directive('limitTextLength', function() {
return function(scope, element, attrs) {
var maxLen = attrs.maxLen;
var el = element.find("[id^=player-]"); // <-- THIS DOESN'T WORK...
if (el.width() > maxLen) { // check text is not too wide
while (el.width() > maxLen) {
var nameTruncated = el.html();
nameTruncated = nameTruncated.substring(0, nameTruncated.length - 1);
el.html(nameTruncated);
}
el.append('…');
}
};
Any suggestion?
var el = element.find("[id^=player-]"); [...]inside$timeout()function. Then it should be run after text render.