为什么限制我的trustAsHtml文本到140个字符无效?

时间:2014-12-09 23:58:51

标签: angularjs

我试图将我的可信文本限制为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>

1 个答案:

答案 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