问题
Hi I need to compare two strings regardless of the case of the letters (uppercase/lowercase).
<tr ng-repeat="x in vm.partners"> <td ng-if = "'vm.partner.name' === 'vm.partners.name'" colspan="2">{{ x.name }}</td> <td ng-if = "'vm.partner.name' === 'vm.partners.name'" colspan="2">{{ x.contact.city.name }}</td> </tr>
I want to check(vm.partner.name) and (vm.partners.name) both two string are same in and pattern.
- I want to keep regex pattern, so please tell me how to do this.
回答1:
As mentioned in comments too , you can use toLowerCase to both the variables and check .No filters or anything needed.
<td ng-if = "vm.partner.name.toLowerCase()== vm.partners.name.toLowerCase()">
Note :do not take vm.partner.name as a string like you have taken in your code.
回答2:
- Use
toLowerCase()
like vertika suggested. - Make a function on the controller to keep the ng code cleaner in html.
- Show/Hide the whole row instead of showing/hiding each cell.
<table ng-app="myApp" ng-controller="HomeCtrl as vm">
<tr ng-repeat="partner in vm.partners" ng-show="vm.isPartner(partner.name)">
<td>{{partner.name}}</td>
<td>{{partner.city}}</td>
</tr>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script>
angular.module('myApp', [])
.controller('HomeCtrl', function() {
let vm = this;
vm.partners = [
{
name: 'John',
city: 'Los Angeles',
},
{
name: 'Jim',
city: 'Las Vegas',
},
{
name: 'Joe',
city: 'Dallas',
},
];
vm.partner = {
name: 'jim',
};
vm.isPartner = function(name) {
return vm.partner.name.toLowerCase() === name.toLowerCase();
};
});
</script>
来源:https://stackoverflow.com/questions/47068074/how-to-compare-two-string-regardless-of-lowercase-and-uppercase-using-angular-js