angularjsfilterangularjs-filter

Limit the length of a string with AngularJS


I have the following:

<div>{{modal.title}}</div>

Is there a way that I could limit the length of the string to say 20 characters?

And an even better question would be is there a way that I could change the string to be truncated and show ... at the end if it's more than 20 characters?


Solution

  • Edit The latest version of AngularJSoffers limitTo filter.

    You need a custom filter like this:

    angular.module('ng').filter('cut', function () {
            return function (value, wordwise, max, tail) {
                if (!value) return '';
    
                max = parseInt(max, 10);
                if (!max) return value;
                if (value.length <= max) return value;
    
                value = value.substr(0, max);
                if (wordwise) {
                    var lastspace = value.lastIndexOf(' ');
                    if (lastspace !== -1) {
                      //Also remove . and , so its gives a cleaner result.
                      if (value.charAt(lastspace-1) === '.' || value.charAt(lastspace-1) === ',') {
                        lastspace = lastspace - 1;
                      }
                      value = value.substr(0, lastspace);
                    }
                }
    
                return value + (tail || ' …');
            };
        });
    

    Usage:

    {{some_text | cut:true:100:' ...'}}
    

    Options:

    Another solution: http://ngmodules.org/modules/angularjs-truncate (by @Ehvince)