【发布时间】:2015-09-16 16:06:24
【问题描述】:
在我的 Angular 应用程序中,我构建了一个视图,其特定目的是以打印机友好的方式显示数据。
但是,我还添加了使用 Angular filter 显示更多/更少文本的选项,该选项将 strings 剪切为预定义的字符数,并让用户通过单击按钮查看其余部分,如下所示:{{elem | cut:!show[$index]:true:max}}.
这是完整的过滤器:
angular.module('pear').filter('cut', function () {
return function (value, enabled, wordwise, max, tail) {
if (!value) return '';
max = parseInt(max, 10);
if (!max) return value;
if(!enabled) return value;
if (value.length <= max) return value;
value = value.toString().substr(0, max);
if (wordwise) {
var lastspace = value.lastIndexOf(' ');
if (lastspace != -1) {
value = value.substr(0, lastspace);
}
}
return value + (tail || '...');
};
});
这就是它最终的样子:
有没有办法为打印视图禁用此filter,或者以某种方式强制使用@media print 的css 条件来显示全文?
作为参考,这是我目前在模板中使用过滤器的方式,以防需要不同的标记方法:
<div class="content"> {{elem | cut:!show[$index]:true:max}}
<span ng-show="!show[$index] && elem.length > max" class="show-more" ng-click="toggleShow($index)">more</span>
<span ng-show="show[$index]" class="show-more no-print" ng-click="toggleShow($index)">less</span>
</div>
【问题讨论】:
-
为什么不添加第二个 来显示未截断的字符串并为其分配一些@media print css?
-
@Trike 是的,这可能是最好的,如果不是唯一的方法。
标签: javascript css angularjs printing