Как заменить значение в ng-repeat, если значение == "строка", иначе не отображается - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь заменить свои данные в таблице строками "Yup" и "": если строка равна "yes", тогда отображается "Yup", иначе не отображается, извините, я новичок и я видел некоторые решения, и я попробовал это, но не работает: {{ person.value ? "Yup":" "}} .. Любая помощь, пожалуйста

angular.module('selectExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.register = {
      value: [
        {value:"Yes"},{value:"no"},{value:"yes"},
        {value:"No"},{value:"no"}
      ],
    };
  }]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="selectExample" ng-controller="ExampleController">
<table id="example" width="100%">
    <thead>
       <tr align="center">
         <th>Value</th>
         <th>Replace</th>
       </tr>
    </thead>			
    <tbody>
       <tr ng-repeat="person in register.value">
         <td align="center">{{ person.value }}</td>
         <td align="center">{{ person.value ? "Yup":" "}}</td>
       </tr>
    </tbody>
</table> 
</div>

1 Ответ

2 голосов
/ 18 апреля 2019

Если вы не можете изменить свои значения, вы можете вызвать toLowerCase() для значения, чтобы убедиться, что оно в нижнем регистре, а затем сравнить его с "yes"

angular.module('selectExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.register = {
      value: [
        {value:"Yes"},{value:"no"},{value:"yes"},
        {value:"No"},{value:"no"}
      ],
    };
  }]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="selectExample" ng-controller="ExampleController">
<table id="example" width="100%">
    <thead>
       <tr align="center">
         <th>Value</th>
         <th>Replace</th>
       </tr>
    </thead>			
    <tbody>
       <tr ng-repeat="person in register.value">
         <td align="center">{{ person.value }}</td>
         <td align="center">{{ person.value.toLowerCase() == "yes" ? "Yup":" "}}</td>
       </tr>
    </tbody>
</table> 
</div>

Причина, по которой ваш код не работал, потому что когда вы используете троичный (? :), он преобразует значения в истинные значения и непустую строкувсегда будет истинным, поэтому каждое значение истинно и всегда будет "Yup"

...