javascript - Angular 模板中的下划线词

标签 javascript html css angularjs

如何在不打断单词或修改实际的 sliderNote 的情况下给“this”和“note”加下划线?

JS:

$scope.sliderNote="This is my note";

HTML:

<div class="sliderNote">
      {{sliderNote}}
      </div>

CSS:

.sliderNote {
  font-size:12px;
  color:gray;

}

最佳答案

您可以通过创建自定义过滤器来实现这一点

在脚本中定义 Controller 和过滤器

var app = angular.module('app', []);

app.controller('mainCtrl', function($scope) {
  $scope.sliderNote="This is my note";
  $scope.selectedWords = ["This","note"];
});

app.filter("underline", function($sce){
    return function(txt, phrase){
       if(phrase instanceof Array){
          if(txt === undefined){
             return;
        }
        for (var i = 0; i < phrase.length; i++) {
            var key = phrase[i];
          txt = txt.replace(new RegExp('('+key+')', 'gi'),'<span style="text-decoration: underline;">$1</span>');
        };  
       }
    return $sce.trustAsHtml(txt);
  };
});

在 View 中使用 data-ng-bind-html

 <!DOCTYPE html>
 <html ng-app="app">

 <head>
  <script  src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.j s"></script>
</head>

 <body ng-controller="mainCtrl">
   <div class="sliderNote" data-ng-bind-html="sliderNote | underline :  selectedWords">

 </body>
 </html>

笨蛋:http://plnkr.co/edit/fLSzpvWwFXQaAs5dcjBf?p=preview

关于javascript - Angular 模板中的下划线词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209110/

相关文章:

html - CSS:不等边三 Angular 形伪元素上的盒阴影效果

html - 粘性 Flexbox 页脚不起作用

javascript - 在knockoutJS中绑定(bind)到可观察数组的问题

javascript - AngularJS $scope 在 javascript 中更新但在 html 中不更新

javascript - 为什么我不能使用 window.open() 打开多个页面?

html - 仅CSS的砌体布局

html - 添加基于条件/输入属性 Angular 2+ 的 CSS 样式 url

javascript - div 的左侧元素为空字符串

javascript - 为什么当我在 iPad 中按下 GO 时,没有聚焦下一个输入?

javascript - 如何将 div 包裹在项目周围?