Не могу прочитать свойство 'длина' из неопределенного - JavaScript - PullRequest
0 голосов
/ 27 августа 2018

Я хочу проверить поля.Когда пользователь ничего не вводит в поле и не нажимает кнопку «Отправить», он не может его подтвердить.

Демонстрация

См. Пример ниже:

    $scope.validateFields = function(){
            alert("Comments " + $scope.comments); //When fields are blank and click on submit, it shows undefined
              if($scope.comments === 'undefined'){
                 alert("comments are blank");//not printed
                 $scope.comments = 'undefined';
            }
            if( $scope.comments.length == 0){
              alert("comments length is zero"); //not printed
              $scope.comments = 'undefined';
            }

В приведенном выше примере кода, когда вы нажимаете кнопку «Отправить», не вводя ничего в поля комментариев, она не вводит условие if.Я хочу назначить $scope.comments='undefined', когда поле комментариев пустое и нажата кнопка отправки.

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Первая проблема - вы проверяете, соответствует ли $ scope.comments строка undefined, а не проверяете, определена ли она в данный момент в заданной области.

if($scope.comments === undefined) {
    alert("comments are blank");//not printed
    $scope.comments = '';
}

Обратите внимание, я только что удалил кавычки вокруг undefinedдля достижения этой цели.Вы даже можете использовать сокращение для этого, которое проверяет, является ли значение ложным.Вы можете найти полный список значений Falsey онлайн, но некоторые из них являются пустой строкой или не определены.

if(!$scope.comments) {
    alert("comments are blank");//not printed
    $scope.comments = '';
}

Далее, вы можете полностью избежать этого, просто инициализировав свою область $ $ с комментариями, подобными этому.

var app=angular.module("myApp",[]);
app.controller('myCtrl', function($scope,$http) {
    $scope.comments = '';

    $scope.validateFields = function() {
        alert("Comments " + $scope.comments);
        if(!$scope.comments){
            alert("comments are blank");
        }
        else {
            alert("comments exist");
        }
    }
});
0 голосов
/ 27 августа 2018

Лучший способ проверить нулевые значения:

if ( testVar !== null )
{
    // do action here
}

для неопределенных

if ( testVar !== undefined )
{
    // do action here
}

Вы можете назначить переменную с неопределенным.

testVar = undefined;

Пожалуйста, обратитесь к значениям Falsey в JavaScript

0 голосов
/ 27 августа 2018

Используйте код ниже.Вы можете инициализировать переменную $ scope во время загрузки контроллера.

app.controller('myCtrl',function($scope,$http){

      $scope.validateFields = function(){
          if($scope.comments){
             alert("comments are blank");
        }
        if( $scope.comments.length == 0){
          alert("comments length is zero");
        }
//      alert("validate"+ $scope.comments.length); 
      } 

      function init() {
        $scope.comments = '';
      }

      init();


    });

Проверка plunkr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...