gpt4 book ai didi

javascript - AngularJS 的 ngSanitize 应该修复标签吗?

转载 作者:行者123 更新时间:2023-11-28 00:53:17 25 4
gpt4 key购买 nike

仍然不确定何时使用 Sanitize,何时不使用。我将旧数据库移至新机器。它有很多博客文章。我曾经用 PHP 显示这些内容,非常直观。对于 Angular 方式,我不能说太多。

angular.module( 'myApp', ['ngSanitize'] );
function blogController($scope,$http,$sanitize) {

var site = "http://onfilm.us/gamengai";
var page = "/fft.php";

console.log( site + page );

$http.get( site + page )
.success(function(response) {

for ( var i = 0; i < response.length; i++ ) {
response[i].text = response[i].text.replace( /<br\s*\/?>/mg, "\n" );
// response[i].text = $sanitize( response[i].text ); // this mangles it
}

$scope.data = response;
});
}

我在
上运行了一个正则表达式来处理这个问题。

上面从 PHP 脚本获取数据。如果我清理文本,这些引号和撇号就会变成垃圾。 (也许他们逃脱了?)但更重要的是,没有受到尊重。它以字符串文字的形式打印出来。

我问了这个问题,并建议进行 sanitizer ,但它只解决了部分问题。

编辑:原始文本(在数据库中)类似于'MyLink '。这正是它在页面上的显示方式。在这里查看它的实际情况:http://onfilm.us/gamengai/index.html

最佳答案

据我所知,$sanitize 实际上并没有对你的原始字符串做任何不当的事情。其目的是从不受信任来源的字符串中去除潜在不安全的 html;它正在工作,只是不是你想象的那样。

你的问题实际上是无关的。问题在于如何将文本绑定(bind)到其元素。目前您只是绑定(bind)一个字符串,这就是您所得到的。你真正想要的是ng-bind-html。现在,它确实变得比这更复杂一点,因为要绑定(bind) html,您需要使用 $sce 首先将导入的资源标记为可信。

首先包含 $sce 作为依赖项,然后...

$http.get(site + page).success(function(response) {

$scope.data = response.map(function(article) {
article.text = $sce.trustAsHtml(article.text);
return article;
});

});

然后在你的 html 中,你当前有这个...

<div class="text">{{ item.text }}<br></div>

将其更改为:

<div class="text" ng-bind-html="item.text"></div>

关于javascript - AngularJS 的 ngSanitize 应该修复标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com