Javascript 是AngularJS';NGS Sanitize应该修复标签吗?

Javascript 是AngularJS';NGS Sanitize应该修复标签吗?,javascript,angularjs,sanitize,Javascript,Angularjs,Sanitize,仍然不确定何时使用消毒液,何时不使用。我把一个旧数据库移到了一台新机器上。它有相当多的博客帖子。我曾经用非常直观的w/PHP来显示这些。我不能说太多的角度的方式 angular.module( 'myApp', ['ngSanitize'] ); function blogController($scope,$http,$sanitize) { var site = "http://onfilm.us/gamengai"; var page = "/fft.php";

仍然不确定何时使用消毒液,何时不使用。我把一个旧数据库移到了一台新机器上。它有相当多的博客帖子。我曾经用非常直观的w/PHP来显示这些。我不能说太多的角度的方式

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;
    });
}
angular.module('myApp',['ngSanitize']);
函数blogController($scope、$http、$sanitize){
变量站点=”http://onfilm.us/gamengai";
var page=“/fft.php”;
控制台日志(站点+页面);
$http.get(站点+页面)
.成功(功能(响应){
对于(变量i=0;i
我在
上运行了一个正则表达式来处理这个问题

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

我问了这个问题,有人建议我进行消毒,但这只解决了部分问题


编辑:原始文本(在数据库中)类似于“”。这就是它在页面上的显示方式。 在这里查看它的实际操作:

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

你的问题实际上是无关的。问题在于如何将文本绑定到其元素。目前,您只是绑定了一个字符串,这就是您得到的结果。您真正想要的是
ng bind html
。现在,它确实变得有点复杂,因为要绑定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>
{{item.text}}
将其更改为:

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


您能告诉我们(a)原始文本是什么,以及(b)生成了什么$sanitize吗?另外,进一步考虑一下,您希望$sanitize做什么?它从一个字符串中删除了潜在的不安全html。我想我认为清理句柄标记以及引号、撇号等。是否有其他方法可以防止Angular对标记执行任何操作?附录:我刚刚注意到您使用的是Angular的旧版本。我不确定$sce在该版本中是否可用,因为html绑定在一些早期版本中的处理方式有所不同。无论如何,我强烈建议升级到Angular 1.3,它有很多重要的错误修复/一般性改进。谢谢你,我明天会检查这个。今晚把它关掉。不过看起来不错。一个问题:ng bind html=“item”>如何工作?我需要它输出项目的特定成员。。。特别是“文本”。哦,你是对的;那只是个打字错误。我会修好的。哟!它成功了——非常感谢现在转到路线图。:)