AngularJS:仅当字符串超出限制时,如何使用limitTo过滤器显示省略号

d1d*_*1du 14 string filter angularjs

我在一些字符串上使用limitTo过滤器.如果字符串小于,例如10个字符,则字符串显示为原样.如果字符串超过10个字符,我想在第十个字符处切断字符串后显示省略号.这样做是否有角色快捷方式?谢谢

例如:

{{main.title | limitTo:10}}
Run Code Online (Sandbox Code Playgroud)

如果main.title ="美好的一天",输出将是:美好的一天

如果main.title ="可怕的一天",输出将是:可怕......

Bei*_*man 36

希望这可以帮助 :

{{ main.title | limitTo: 10 }}{{main.title.length > 10 ? '...' : ''}}
Run Code Online (Sandbox Code Playgroud)

  • 这很快,易于理解,并且完美地满足了我的需求. (2认同)

dev*_*033 26

好吧,如果你想要你可以为此构建一个过滤器,但我会使用ngIf指令,如下所示:

(function() {
  'use strict';

  angular.module('app', [])
    .controller('mainCtrl', function() {
      var vm = this;

      vm.text = 'Really longer than 10';
    });
})();
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.7/angular.min.js"></script>
</head>

<body ng-controller="mainCtrl as ctrl">
  Without limit: <span ng-bind="ctrl.text"></span>
  <hr>
  With limit: <span ng-bind="ctrl.text | limitTo:10"></span>
  <span ng-if="ctrl.text.length > 10">...</span>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)


Krz*_*ski 5

编写您自己的过滤器limitTo是最好的方法。

angular.module('your-module-name').filter('dotsFilter', [
    '$filter',
    function ($filter) {
        /**
         * Shorten the input and add dots if it's needed
         * @param {string} input 
         * @param {number} limit
         */
        function dotsFilter(input, limit) {
            var newContent = $filter('limitTo')(input, limit);
            if(newContent.length < input.length) { newContent += '...'; }
            return newContent;
        }

        return dotsFilter;
    }
]);
Run Code Online (Sandbox Code Playgroud)

在视图中使用:

{{ model.longTextData | dotsFilter:10 }}
Run Code Online (Sandbox Code Playgroud)