字符串替换角度模板逻辑中的多个字符

时间:2016-02-27 03:23:35

标签: javascript angularjs regex replace

我有角度模板,显示使用ng-repeat的项目列表,它会对项目的属性进行比较 我希望逻辑保持在模板中并立即显示结果,但是下面的逻辑反而抛出错误而渲染失败 正常替换为单个字符,但不包含多个字符。

<div ng-repeat="item in items">
    <p>{{item.old_name}}</p>
    <input ng-model="item.new_name">
    <span>
        {{item.old_name.replace(/ |_/g, '-') == item.new_name(/ |_/g, '-') ? "same" : "not same"}}
    </span>
</div>

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我相信您的问题是使用未转义的|符号,我不确定您是如何在角度模板中转义字符串的 - 但是(imo)下面的代码段将是更合适的解决方案(虽然不符合你原来的问题参数)。

&#13;
&#13;
function ctrlr ($scope) {
  $scope.items = [
    { name: 'name one', newname: 'name diff' },
    { name: 'name_two', newname: 'name two' },
    { name: 'name three', newname: 'name three' },
  ]
      
  $scope.compareString = function(str, str2) {
    return str.replace(/ |_/g, '-') === str2.replace(/ |_/g, '-') ? 'same' : 'different'
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div  ng-app ng-controller="ctrlr">
  <div ng-repeat="item in items">
    {{ compareString(item.name, item.newname) }}
  </div>
</div>
&#13;
&#13;
&#13;