使用show less / more选项截断多行HTML绑定

时间:2015-04-16 06:19:20

标签: jquery css angularjs ionic-framework

我对此question有类似的问题。此解决方案的问题在于jquery.autoellipsis会降低我的应用速度,并且还需要进行更改才能添加 显示更多/更少 功能。

在我的情况下,我从 ng-repeat 中的 ng-bind-html 获取动态内容作为html代码。

  <ion-item ng-repeat="page in pages">
     <div ng-bind-html="page.extract" class="item item-text-wrap"></div>
  </ion-item>

我想有一个指令在 X像素(高度)或 Y行之后截断html代码,并且还显示选项查看更多/更少以防有内容显示。

我找到的大多数解决方案仅用于纯文本或需要其他插件,例如More

感谢。

2 个答案:

答案 0 :(得分:5)

在测试了一些可用的 Jquery 插件之后,这是最有效的插件:Trunk8

原因:

  1. 加载速度更快。
  2. 使用普通测试和HTML(不是那么多代码)。
  3. Costumization可以在Directive中完成。
  4. 步骤:

    1. 下载Trunk8
    2. 添加对jQuery和插件:trunk8.js
    3. 的访问权限
    4. 创建指令(见下文
    5. 添加对指令的访问权限(如有必要)
    6. 从app.js访问modude:var app = angular.module('app',['ellipsis'])
    7. 您认为的致电指令。
    8. 指令:

      angular.module( 'ellipsis', [])
          .directive('ellipsis', [function () {
          return {
              required: 'ngBindHtml',
              restrict: 'A',
              priority: 100,
              link: function ($scope, element, attrs, ctrl) {
                  $scope.hasEllipsis = false;
                  $scope.$watch(element.html(), function(value) {
                     if (!$scope.hasEllipsis) {
                         // apply this code ONCE
                         $scope.hasEllipsis = true;
                         $(element).trunk8({
                              fill: '&hellip; <a id="read-more" href="#">read more</a>', /*(Default: '&hellip;') The string to insert in place of the omitted text. This value may include HTML.*/
                              lines: 3, /*(Default: 1) The number of lines of text-wrap to tolerate before truncating. This value must be an integer greater than or equal to 1.*/
                              //side: 'right', /*(Default: 'right') The side of the text from which to truncate. Valid values include 'center', 'left', and 'right'.*/
                              tooltip: false, /*(Default: true) When true, the title attribute of the targeted HTML element will be set to the original, untruncated string. Valid values include true and false.*/
                              //width: 'auto', /*(Default: 'auto') The width, in characters, of the desired text. When set to 'auto', trunk8 will maximize the amount of text without spilling over.*/
                              parseHTML: true /*(Default: 'false') When true, parse and save html structure and restore structure in the truncated text.*/
                              //onTruncate /*(Callback): Called after truncation is completed.*/
                         });
                         $(element).on('click', '#read-more', function (event) {
                              $(element).trunk8('revert').append(' <a id="read-less" href="#">read less</a>');
                         });
                         $(element).on('click', '#read-less', function (event) {
                              $(element).trunk8();
                         });
                      }
                  });
              }
          };
      }]);
      

      查看:

      <ion-item ng-repeat="page in pages">
        <div ng-bind-html="page.extract" class="item item-text-wrap" ellipsis></div>
      </ion-item>
      

答案 1 :(得分:0)

当我用谷歌搜索“角省略指令”时的第一个结果 - 你试过吗?

https://github.com/dibari/angular-ellipsis