我试图将我的可信文本限制为140个字符,但所有文本都显示出来。知道为什么吗? limitTo:140
无效。
这是我的代码:
for (var i = 0; i < data.results.length; i++) {
data.results[i].Description = $sce.trustAsHtml(data.results[i].Description);
$scope.vehicles.push(data.results[i]);
}
<div class="child" ng-repeat="vehicle in vehicles">
<div data-ng-bind-html="vehicle.Description | limitTo:140"></div>
</div>
答案 0 :(得分:4)
这是因为limitTo过滤器需要Source array, string or number to be limited.
但是你提供给过滤器的是可信值,它是一个在绑定过程中稍后扩展的对象。您可以使用$scope.vehicle.Description.valueOf()
获取值,该值会展开可信值。
所以你可以这样做: -
<div data-ng-bind-html="vehicle.Description.valueOf() | limitTo:140"></div>
或者您也可以直接在说明中应用过滤器,注入limitToFilter
并执行: -
data.results[i].Description =
$sce.trustAsHtml(limitToFilter(data.results[i].Description, 140));
注意: - 如果您使用ng-bind-html
,则不需要$sce.trustAsHtml
,因为指令本身将在内部处理它,因此您也可以删除代码: -
data.results[i].Description = $sce.trustAsHtml(data.results[i].Description);
并直接使用它,以便Description
不再是wrappedTrustedValue
对象,而是字符串本身将被限制,然后解析为html: -
<div data-ng-bind-html="vehicle.Description | limitTo:140"></div>
<强> Demo 强>