使用AngularJS

时间:2015-12-01 13:11:23

标签: angularjs

我想使用AngularJS过滤器获取HTML字符串的文本,但似乎无法使用我的代码。

我的代码:

app.filter('unsafe', function($sce) {
    return $sce.trustAsHtml;
});

app.filter('short', function() {
    return function(short, length) {
        return short.substr(0, length || 20)+'...';
   }
});

我的模板:

<p ng-bind-html="event.description | unsafe | short"></p>

编辑#1:

Error: [$injector:unpr] Unknown provider: unsafeFilterProvider <- unsafeFilter

2 个答案:

答案 0 :(得分:4)

简单地说,这就是你的问题:
$sce.trustAsHtml 会返回字符串,因此,返回的对象具有substr原型函数&& #39;重新尝试在short过滤器中使用 <{strong> unsafe

以下是 AngularJS documentation for $sce.trustAs的引用:

  

[...]返回一个受angular信任的对象,以便在使用提供的值的指定严格上下文转义上下文[...]中使用。

做到这一点:

<!-- "short" filter before "unsafe" -->
<p ng-bind-html="event.description | short | unsafe"></p>

...而不是:

<p ng-bind-html="event.description | unsafe | short"></p>

......你很高兴去!

这是一个有效的JSFiddle用于说明。

答案 1 :(得分:-1)

AngularJS过滤器有两个参数,即输入和$ scope

&#13;
&#13;
app.filter('customFilter', function () {
  return function (input, scope) {
    var manipulatedInput = (input * 2) / 5;
    return manipulatedInput;
  };
});
&#13;
&#13;
&#13;

你可以像这个片段一样得到它们。希望它有所帮助!