Как проверить, отсутствует ли атрибут объекта в AngularJS?

#angularjs #angular-ui-router

#angularjs #angular-ui-router

Вопрос:

 if ($scope.cnr.cnrIndicator) {
                        // If billing already initiated, disable. Else, enable (by default)
                        if ($scope.cnr.billingInitiatedInd === true) {
                            $scope.display.createCNR = false;
                            $scope.cnr.reason = $filter('formatTextAreaString')($scope.cnr.reason);
                        }
                        else if (_.isUndefined($scope.cnr.billingInitiatedInd)) {
                            $scope.display.createCNR = false;
                            $scope.cnr.reason = $filter('formatTextAreaString')($scope.cnr.reason);
                        }
                    }
 

Я должен проверить, $scope.cnr.billingInitiatedInd не возвращает ли какое-либо значение.

Я использовал isUndefined , но это, похоже, не работает.

Ответ №1:

если ожидается, что какое-либо значение не определено, вы можете проверить его с помощью !!!. Как это работает

 let a = {b : 2}; //or null
console.log(!!!a.q) 
//object a has no property q 
//but it outputs true
 

Итак, в вашем случае вы можете проверить это следующим образом

 if ($scope.cnr.cnrIndicator) {
                    // If billing already initiated, disable. Else, enable (by default)
                    if ($scope.cnr.billingInitiatedInd === true) {
                        $scope.display.createCNR = false;
                        $scope.cnr.reason = $filter('formatTextAreaString')($scope.cnr.reason);
                    }
                    else if (!!!$scope.cnr.billingInitiatedInd) {
                        $scope.display.createCNR = false;
                        $scope.cnr.reason = $filter('formatTextAreaString')($scope.cnr.reason);
                    }
                }