混淆角表达式
Confuse about angular expressions
本文关键字:表达式 更新时间:2023-09-26
这就是我想要实现的:当用户输入一些文本时,我会找到字符a
,并使用<em>
标记在另一个<label>
中强调它,这是我的html标记:
<div ng-controller="demoController">
<input type="text" ng-model="input" />
<label>{{emphasize()}}</label>
</div>
如上所示,我在demoController
中使用emphasize
方法来做强调工作:
myapp.controller('demoController', function ($scope) {
$scope.input = 'Hello';
$scope.emphasize = function () {
return $scope.input.replace(/a/g, '<em>a</em>');
}
});
但结果是,角转义<em>
标记。例如,如果我输入apple
,那么标签将显示<em>a</em>pple
,而不是I want: a苹果。
为什么会这样呢?有什么方法可以防止这种情况发生吗?
要做到这一点,一个简单的ng-bind-hmtl
就可以做到:
<span ng-bind-html="emphasize()"></span>
但这不是很安全,所以最好在控制器上添加这个:
myapp.controller('demoController', function ($scope, $sce) {
$scope.input = 'angularJS';
$scope.emphasize = function () {
var res = $scope.input.replace(/a/g, '<em>a</em>');
return $sce.trustAsHtml(res);
}
});
为你的模块添加一个过滤器:
myapp.filter('unsafe', ['$sce', function ($sce) {
return function (a) { return $sce.trustAsHtml(a) };
}]);
和在你看来:
<span ng-bind-html="emphasize() | unsafe"></span
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- ng init中的表达式无法使用ng repeat
- 正则表达式在字符串中找到base64
- 我的AngularJS表达式没有'不起作用
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- "锻造;React中的表达式
- Javascript:应为赋值或函数调用,但实际看到的却是表达式