我的初始值为
$scope.abc = 'abc'
也许在点击事件下我想将值转换为
$scope.abc = '<h1>abc</h1>'
我知道有像 ng-bind 这样的东西可以转义 html,但是有没有更快速的方法来做到这一点?
最佳答案
不,没有快速的方法来转义 HTML。事实上,您看到的很多困难是 deliberate and safety-minded ,因为包含任意用户提供的 HTML 的能力是允许跨站点脚本、恶意全页接管和许多其他问题的载体。 Angular 通过让安全插入任意文本变得非常容易,但插入任意标记却非常困难来解决这个问题。 (当然,您描述的 HTML 可能是硬编码在您的脚本中,但 Angular 并不一定会以任何不同的方式对待它。)
我也不同意更改标记是正确的方法:<h1>
与任意 <p>
具有非常不同的语义含义, <div>
,或<span>
,因此如果您想调整该字符串在页面中的显示方式,您可能应该使用 ng-class
来执行此操作或ng-if
.
// JS
$scope.callOutAbc = true;
// CSS
.called-out { font-size: 36pt; font-weight: bold; /* ... */ }
// HTML
<header ng-class="{ 'called-out': callOutAbc }">{{ abc }}</header>
或
<div ng-if="!callOutAbc">{{ abc }}</div>
<h1 ng-if="callOutAbc">{{ abc }}</h1>
关于javascript - 在 $scope 变量中转义 html 的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096391/