我有角度模板,显示使用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>
如何解决这个问题?
答案 0 :(得分:1)
我相信您的问题是使用未转义的|
符号,我不确定您是如何在角度模板中转义字符串的 - 但是(imo)下面的代码段将是更合适的解决方案(虽然不符合你原来的问题参数)。
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;