Javascript 预处理AngularJS输出

Javascript 预处理AngularJS输出,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我想在AngularJS更新任何HTML之前添加一个预处理步骤。为了简单起见,让我们将hello的所有实例都加粗 也就是说,如果我们让$scope.text=“hello world!”,我们希望以某种方式 {{ text }} 在$digest循环期间进行评估 <b>hello</b> world! 你好,世界! 如果更改了$scope.text,当然会根据需要进行更新 如何做到这一点?最好是一个指令,这样中的任何表达式都可以被处理。是一个很好的过滤器。下面是一个

我想在AngularJS更新任何HTML之前添加一个预处理步骤。为了简单起见,让我们将
hello
的所有实例都加粗

也就是说,如果我们让
$scope.text=“hello world!”
,我们希望以某种方式

{{ text }}
$digest
循环期间进行评估

<b>hello</b> world!
你好,世界!
如果更改了
$scope.text
,当然会根据需要进行更新

如何做到这一点?最好是一个指令,这样
中的任何表达式都可以被处理。

是一个很好的过滤器。下面是一个改编自的基本过滤器,它将
hello
的任何实例替换为一个由粗体标记包围的实例:

(函数(角度){
"严格使用",;
angular.module('myFilterApp',[])
.filter('boldHello',函数($sce){
返回函数(输入){
输入=输入| |“”;
var out=input.replace(/hello/gi,函数(文本){
返回“”+文本+“”;
});
返回;
};
})
.controller('MyController',['$scope',函数($scope){
$scope.greeting='哦,你好,我的朋友';
}]);
})(窗口角度)


无筛选器:{{问候语}}
粗体:{{问候|粗体问候}}

这种情况看起来很简单,过滤器可能工作得很好。嗯,过滤器很酷。有一件事——这是针对聊天应用程序的,因此,如果用户输入任意HTML,并且这个查找替换算法完成了它的工作,那么它最终不会清理HTML。如何防止这种情况发生?最简单的方法是立即从用户的输入中删除任何
,或将
转换为
。如果你想让他们能够键入一些标签,你需要一个更智能的过滤器,或者其他一些解决方案。