$sce 服务,设置服务器传来的数据为可渲染的html数据

服务器端:

service层:

@Service
public class SearchServiceImpl implements SearchService {
    @Autowired
    private SolrTemplate solrTemplate;

    /**
     *
     * @param param
     * @return
     */
    @Override
    public Map<String, Object> search(Map<String,Object> param) {
        Map<String,Object> data = new HashMap<>();
        Query query = new SimpleQuery("*:*");
        String keywords = (String) param.get("keywords");
        if (keywords != null && StringUtils.isNotBlank(keywords)){
            HighlightOptions options = new HighlightOptions();
            options.addField("title");
            options.setSimplePrefix("<font color='red'>");
            options.setSimplePostfix("</font>");
            query = new SimpleHighlightQuery().setHighlightOptions(options);
            Criteria criteria = new Criteria("keywords").is(keywords);
            query.addCriteria(criteria);
            HighlightPage<SolrItem> solrItems = solrTemplate.queryForHighlightPage((HighlightQuery) query, SolrItem.class);
            List<HighlightEntry<SolrItem>> highlighted = solrItems.getHighlighted();
            for (HighlightEntry<SolrItem> entry : highlighted) {
                SolrItem entity = entry.getEntity();
                if ( entry.getHighlights().size()> 0 && entry.getHighlights().get(0).getSnipplets().size()> 0){
                    String title = entry.getHighlights().get(0).getSnipplets().get(0);
                    entity.setTitle(title);
                }
            }
            List<SolrItem> content = solrItems.getContent();
            data.put("rows",content);
            return data;
        }
        ScoredPage<SolrItem> solrItems = solrTemplate.queryForPage(query, SolrItem.class);
        List<SolrItem> content = solrItems.getContent();
        data.put("data",content);
        return data;
    }
}

controller层:

@RestController
@RequestMapping("/search")
public class SearchController {

    @Reference(timeout = 10000)
    private SearchService searchService;

    @PostMapping("/searchItem")
    public Map<String,Object> searchItem(@RequestBody Map<String,Object> param){
        try {
            return searchService.search(param);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

js 代码:

<script type="text/javascript">
var app=angular.module("myApp",[]);
app.controller("mycontroller",function ($scope, $sce, $http) {
$scope.trustHtml = function(data) {
    return $sce.trustAs($sce.HTML, data);
};
$scope.searchEntity = {};
$scope.search=function () {
    $http.sendPost("/search/searchItem",$scope.searchEntity).then(
        function (response) {
            $scope.map = response.data;
        }
    );
});
</script>

html :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>HelloWord</title>
<script src="/angular.min.js"></script>
<script src="/jquery.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myController" ng-init="search()">
<h2>ng-bind-html 不能用在textarea标签</h2>
<div ng-repeat="item in rows">
   <div>
      <div  ng-bind-html="trustHtml(item.title)">
       </div>
   </div>
</div>
</body>
</html>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值