Как преобразовать строку в формат времени в контроллере angularjs - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть такой набор данных в моем контроллере

{
"schedule":[{"day":"Monday","start":"15:00:00"},{"day":"Tuesday","start":"16:30:00"}]
}

На мой взгляд, я хотел бы использовать ввод [время]

<div ng-repeat="day in obj.schedule">
 <input  type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start"/>
</div>

Это не работает, потому что он ожидаетдата, а не строка.

Как я могу конвертировать в контроллере мою строку во время?

Я пытался использовать

$scope.start = new Date(obj.start)

, но это не работает

var app = angular.module('myApp', []);
app.controller('mainCtrl', function($scope) {
  $scope.obj = {
    "schedule": [{
      "day": "Monday",
      "start": "15:00:00"
    }, {
      "day": "Tuesday",
      "start": "16:30:00"
    }]
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="mainCtrl">
  <div ng-repeat="day in obj.schedule">
    <input type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start" />
  </div>
</div>

1 Ответ

0 голосов
/ 27 ноября 2018

Если в вашем случае ожидается дата, возможно, попробуйте что-то в этом духе

angular.module('app',[])

.controller('mainCtrl', function($scope){
  var vm = this;
  
  $scope.obj = {
    "schedule": [{
      "day": "Monday",
      "start": "15:00:00"
    }, {
      "day": "Tuesday",
      "start": "16:30:00"
    }]
  }
  
  for(var i = 0; i < $scope.obj.schedule.length; i++) {
    $scope.obj.schedule[i].start = stringToDate($scope.obj.schedule[i].start);
  }
 
  function stringToDate(stringDate) {
    var date = new Date();
    var splitDate = stringDate.split(':');
    date.setHours(splitDate[0], splitDate[1], splitDate[2]);
    
    return date.toLocaleTimeString();
  }
})
<html ng-app="app">
  <body>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <div ng-controller="mainCtrl as vm">
      <div ng-repeat="day in obj.schedule">
        <input type="time" min="00:00:00" max="23:59:00" placeholder="" ng-model="day.start"/>
      </div>
    </div>
  </body>
</html>
...