javascript - 在 $scope 变量中转义 html 的快速方法

标签 javascript angularjs

我的初始值为

$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/

相关文章:

javascript - 如何将图像保存在特定文件夹 s3 下?

javascript - JavaScript 中惯用的嵌套 for 循环

javascript - $window.open 仍在phonegap应用程序中打开url( Angular )

javascript - Angular JS 从数据库更新 View

javascript - reactJS 在系统范围内禁用 console.log

javascript - 如何允许对数据表进行排序?

javascript - 为什么对象上的相等运算符返回 false?

javascript - Vuejs 和 Axios 进行多次 get 请求

javascript - 你能在 JS 中获得样式而不附加到 DOM 元素吗?

javascript - Node 最佳实践: Throwing async error in constructor