react在组件内插入标签_react和angualr动态插入带html标签或不带html标签的数据

let content = '';//content是后台返回的未知的一长串字符串,可能是'

内容

一个div
',也可能是'内容\r\n任何格式'

let reg = new RegExp('^\s]+)[^>]*>(.*?)?$');

let format= reg.test(content); //content有可能是有格式的(带html标签),也可能无格式

if(!format){

content= content && content.split('\n').map((item,i)=>

{item.replace(/(^\s*)|(\s*$)/g, "")}

);

}else{

content= content && content.replace(/\n/g, "
");//带格式的可能含有换行的/n,要转化为

}

let contentHtml1= ;

let contentHtml2 = {content};

let contentHtml = format ?contentHtml1 : contentHtml2;return(

{contentHtml}

);

react是用dangerouslySetInnerHTML添加带html标签的字符串,dangerouslySetInnerHTML={{__html: content}}  类似 jquery的$('#id').html(content);

而react的{content}是类似 jquery的$('#id').text(content);直接插入content的内容不渲染里面的标签元素。

类似的angular也有这种方法

app.controller('detailCtrl', ['$scope','$rootScope','$routeParams','$http','$sce', function ($scope,$rootScope,$routeParams,$http,$sce) {

$http.get('/api/v1/topic/'+$routeParams.id).success(function(data){

$scope.data = data.data;

$scope.trustHtml = $sce.trustAsHtml(data.data && data.data.content);

//$('#content').html(data.data && data.data.content);

});

}]);

在angular用$sce 对象,将html中定义的属性ng-bind-html="xx",的,在controller里面用$scope.xx = $sce.trustAsHtml('

test

test2
');相当于$('#content').html();

而对于不含html标签的数据,直接定义{{xx}},通过$scope.xx = '';

代码github地址:https://github.com/fengnovo/diary/tree/master/others/angular/20161029/ng-app

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值