Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
过滤器更改句子angularjs中单词的颜色_Angularjs - Fatal编程技术网

过滤器更改句子angularjs中单词的颜色

过滤器更改句子angularjs中单词的颜色,angularjs,Angularjs,我想改变句子中单词的颜色我怎么做 控制器代码: app.controller("myController",function($scope){ $scope.phrase="This is a bad phrase"; }); app.filter('censor', function(){ return function(input){ var cWords = ['bad', 'evil', 'dar

我想改变句子中单词的颜色我怎么做

控制器代码:

app.controller("myController",function($scope){

                $scope.phrase="This is a bad phrase";
    });

    app.filter('censor', function(){
        return function(input){
            var cWords = ['bad', 'evil', 'dark'];
            var out = input;
            for(var i=0; i<cWords.length;i++){
                out = out.replace(cWords[i], <span class="blue"></span>);
            }
            return out;
        };
    })

首先,如果要在过滤器中绑定html,需要使用ngSanitize和binding指令:ng bind html而不是{{},如下所示:

<p ng-bind-html="ctrl.phrase | censor"></p>

在js文件中,您需要检查短语是否包含任何要过滤掉的单词,然后更新短语

angular
  .module('app', ['ngSanitize'])
  .controller('MainCtrl', function() {
    var ctrl = this;

    ctrl.phrase = 'This is a bad phrase';
  })
  .filter('censor', function() {
    return function(input) {
      var cWords = ['bad', 'evil', 'dark'];
      var splitPhrase = input.split(' ');
      var out = splitPhrase.reduce(function(acc, curr) {
        if (cWords.indexOf(curr) > -1) {
          acc.push('<span class="blue">' + curr + '</span>');
        } else {
          acc.push(curr);
        }

        return acc;
      }, []);

      return out.join(' ');
    }
  });
angular
.module('app',['ngSanitize']))
.controller('MainCtrl',function(){
var ctrl=this;
ctrl.phrase='这是一个糟糕的短语';
})
.filter('censor',function(){
返回函数(输入){
var cWords=['bad','evil','dark'];
var splitPhrase=input.split(“”);
var out=splitPhrase.reduce(功能(acc,curr){
if(cWords.indexOf(curr)>-1){
加速推力(''+电流+'');
}否则{
加速推力(电流);
}
返回acc;
}, []);
返回。加入(“”);
}
});

你可以在这里找到一个例子:

谢谢但我想这是一个不好的短语我想做语法高亮我一直在更新示例谢谢我的朋友最后一个问题我想让cWords[0]颜色为红色,cWords[2]蓝色?我该怎么做呢?您可以简单地通过使用cWords对象来实现这一点。我已经更新了这个例子,在这里你可以找到最新的:对不起,我有一个问题。坏的\n坏的\n不工作
angular
  .module('app', ['ngSanitize'])
  .controller('MainCtrl', function() {
    var ctrl = this;

    ctrl.phrase = 'This is a bad phrase';
  })
  .filter('censor', function() {
    return function(input) {
      var cWords = ['bad', 'evil', 'dark'];
      var splitPhrase = input.split(' ');
      var out = splitPhrase.reduce(function(acc, curr) {
        if (cWords.indexOf(curr) > -1) {
          acc.push('<span class="blue">' + curr + '</span>');
        } else {
          acc.push(curr);
        }

        return acc;
      }, []);

      return out.join(' ');
    }
  });