AngularJS дата в контроллере не определена - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь добавить дату, которая по умолчанию соответствует текущему дню, на мою страницу.Ниже приведен угловой скрипт для этого, но когда я нажимаю добавить день, я получаю сообщение об ошибке undefined?Я не понимаю, я считаю, что это было определено правильно.

$scope.today= new Date();
$scope.add = {};

       if($scope.today){
           var today= new Date($scope.today)
           $scope.add.today=
                today.getFullYear()+'-'+(today.getMonth() + 1)+'-'+today.getDate();
       }else{
           $scope.add.today= null;
       }
<div class="form-group col-sm-4">
      <label for="Date">Date</label>
      <input type="date" class="form-control" name="add_row_today" id="add_row_today" ng-model="today">
</div>

Вот так выглядит мой код.

это трассировка стека с консоли

TypeError: Cannot set property 'today' of undefined
    at m.$scope.add_list (angularScripts.js?v=1.3:8741)
    at fn (eval at compile (_bower.js?v=1.2:10467), <anonymous>:4:220)
    at b (_bower.js?v=1.2:10360)
    at e (_bower.js?v=1.2:10510)
    at m.$eval (_bower.js?v=1.2:10379)
    at m.$apply (_bower.js?v=1.2:10380)
    at HTMLInputElement.<anonymous> (_bower.js?v=1.2:10510)
    at HTMLInputElement.dispatch (_bower.js?v=1.2:5201)
    at HTMLInputElement.elemData.handle (_bower.js?v=1.2:5009)

1 Ответ

0 голосов
/ 06 июня 2018

У вас есть опечатка.

property 'today' of undefined означает, что у чего-то есть .today, которого не существует.В вашем случае это либо $scope.add, либо $scope.edit

Я думаю, что при изменении кода вы забыли заменить один из них.Попробуйте изменить:

$scope.edit.today = null;

на

$scope.add.today = null;

Или инициализируйте его, если вам его не хватает, с помощью $scope.edit = {};


Учитывая ваш отредактированный код, выесть рабочий раствор

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.today = new Date();
  $scope.add = {};

  if ($scope.today) {
    var today = new Date($scope.today)
    $scope.add.today =
      today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
  } else {
    $scope.add.today = null;
  }
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<body>
  <div ng-app="myApp" ng-controller="myCtrl">

    <div class="form-group col-sm-4">
      <label for="Date">Date</label>
      <input type="date" class="form-control" name="add_row_today" id="add_row_today" ng-model="today">
    </div>

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