Назначить значение на основе одного из нескольких логических значений - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь упростить операторы if моего кода. На данный момент у меня есть эти 3 уродливые операторы if, и я ищу способ присвоить имя свойству vm.model, исходя из которого в настоящее время истинно значение vm.model.status.

Скажи vm.model.received === true Я хотел бы написать что-то вроде

vm.model.status = //vm.model[name] << if vm.model.received/issued/cancelled true

Возможно ли в этом случае написать код лучше, чем повторяться 3 раза?

angular.module('app',[])

.controller('mainCtrl', function() {
  var vm = this;
  
  vm.model = {
    received: true,
    issued: false,
    cancelled: false,
    anotherProp: 'abc',
    anotherProp2: 'def'
  }
  
  if(vm.model.received) {
     vm.model.status = 'received';
  } else if(vm.model.issued) {
     vm.model.status = 'issued';
  } else if(vm.model.cancelled) {
     vm.model.status = 'cancelled';
  }
  
})
<html ng-app="app">
 <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.5/angular.min.js"></script>
 </head>
 <body>
    <div ng-controller="mainCtrl as vm">
      <form>
         <input type="radio" ng-model="vm.model.status" value="received">Received
         <input type="radio" ng-model="vm.model.status" value="issued">Issued
         <input type="radio" ng-model="vm.model.status" value="cancelled">Cancelled
      </form>
    </div>
  </body>
 </html>

1 Ответ

0 голосов
/ 25 января 2019

Вы можете поместить ключи / значения в массив и найти значение. Вам также может понадобиться значение по умолчанию.

vm.model.status = ['received', 'issued', 'cancelled'].find(k => vm.model[k]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...