Angular:根据键盘输入向字符串添加 HTML 标记
Angular: add HTML markup to string depending on keyboard input
我有一个输入字段,我想在填写输入字段时将输入打印到屏幕上。但是我想扫描输入文本,以粗体打印某些单词。
例如,如果我输入:“你好,你好吗?”
我希望它打印在输入字段下,但 Hello 必须以粗体显示:
你好你好吗?
Angular 有没有办法实现这个?
是的。您可以通过使用 NgModelController
来实现它(创建指令并使用 require
属性 来访问此控制器)。
Here is a nice example 通过在所需控制器上实现 $render
方法来拦截输入并在呈现之前更改它。
另一个将输入文本呈现为粗体的示例:http://jsbin.com/moxosorola/1/edit
请注意,它不会更改 ngModel
本身的值,而是通过使用自定义指令 (bold-render
).
为此,您必须用 <b>Word</b>
替换要加粗的字词,
你在你的控制器中这样做:
$scope.$watch('textInput', function(){
$scope.formattedText = $scope.textInput.replace(/(Hello|SomeWord|OtherWord)/ig, "<b></b>");
});
并在模板中
<div ng-bind-html="formattedText"></div>
*我用正则表达式替换了单词,</code>是匹配的单词</p>
<p>*<code>ng-bind-html
指令呈现为 HTML 而不是 纯文本 ,这是 AngularJS 的一种安全性,它不'让你直接把HTML放在{{ formattedText }}
我有一个输入字段,我想在填写输入字段时将输入打印到屏幕上。但是我想扫描输入文本,以粗体打印某些单词。
例如,如果我输入:“你好,你好吗?”
我希望它打印在输入字段下,但 Hello 必须以粗体显示: 你好你好吗?
Angular 有没有办法实现这个?
是的。您可以通过使用 NgModelController
来实现它(创建指令并使用 require
属性 来访问此控制器)。
Here is a nice example 通过在所需控制器上实现 $render
方法来拦截输入并在呈现之前更改它。
另一个将输入文本呈现为粗体的示例:http://jsbin.com/moxosorola/1/edit
请注意,它不会更改 ngModel
本身的值,而是通过使用自定义指令 (bold-render
).
为此,您必须用 <b>Word</b>
替换要加粗的字词,
你在你的控制器中这样做:
$scope.$watch('textInput', function(){
$scope.formattedText = $scope.textInput.replace(/(Hello|SomeWord|OtherWord)/ig, "<b></b>");
});
并在模板中
<div ng-bind-html="formattedText"></div>
*我用正则表达式替换了单词,</code>是匹配的单词</p>
<p>*<code>ng-bind-html
指令呈现为 HTML 而不是 纯文本 ,这是 AngularJS 的一种安全性,它不'让你直接把HTML放在{{ formattedText }}