формат даты из результата json и отображение в таблице angularjs

0

Я получаю запрос на страницу, которая возвращает json с датами в формате "dd/MM/yyyy". Я разбираю его, и я показываю его в таблице, такой как ниже

<script>
angular.module("myApp",[])
.controller("mainController", function($scope, $http) {
    $http.get('backList.php',{params: {dta: $scope.dataSelected}})
            .success(function(data) { if("null" == data) 
                                        $scope.list=""; 
                                    else {
                                        $scope.list=data;
                                    }
                                    } )
            .error(function() { alert("Error retrieve data!"); });
    }
});
</script>

<body ng-controller="mainController">
<div>
<table>
  <tbody>
    <tr ng-repeat="row in list">
      <td align="center">{{row.dta_example}}</td>
      <td align="center"><input class="calendar" type="text" ng-model="row.dta_example" ng-value="row.dta_example" /></td>
    </tr>
  </tbody>
</table>
</div>
</body>

все работает нормально, но я бы хотел использовать type = "data", чтобы выскочить календарь, но если я использую это, я получаю сообщение об ошибке, которое сообщает мне, что row.dta_example должен быть объектом Date().

поэтому я сделал что-то подобное в методе успеха вызова get:

.success(function(data) { if("null" == data) 
                                        $scope.list=""; 
                                    else {
                                        $scope.list=data;
                                        var i = 0;
                                        for(var key in $scope.list){
                                            $scope.list[i].dta_example=new Date.exactmatch(key.dta_example)
                                        }
                                    }
                                    } )

но не удается.

  • 0
    Просто комментарий о датах - я бы никогда больше не использовал ничего, кроме моментов, это сделает вашу жизнь намного проще - momentjs.com

2 ответа

0

Используйте momentjs.com в фильтре.

<script>
  angular.module("myApp",[])
  .controller("mainController", function($scope, $http) {
     $http.get('backList.php',{params: {dta: $scope.dataSelected}})
        .success(function(data) { if("null" == data) 
                                    $scope.list=""; 
                                else {
                                    $scope.list=data;
                                }
                                })
        .error(function() { alert("Error retrieve data!"); });
      }
   });
  angular.module("myApp").filter('momentFilter', function () {
     return function (date) {
       if (date === null || !angular.isDefined(date))
         return null;
       if (moment(date).isValid()) {
         return moment(date).format('DD. MM. YYYY HH:mm');
       }
       return date;
    }
  });
</script>

<body ng-controller="mainController">
<div>
 <table>
   <tbody>
     <tr ng-repeat="row in list">
       <td align="center">{{row.dta_example | momentFilter }}</td>
       <td align="center"><input class="calendar" type="text" ng-model="row.dta_example" ng-value="row.dta_example" /></td>
     </tr>
   </tbody>
 </table>
</div>
</body>
  • 0
    я добавил в ваш код ng-value = "row.dta_example | momentFilter" и изменил формат для момента (даты) .format ('ДД / ММ / ГГГГ'); но все еще не правильно. если я ставлю дату, например 12.12.2012, я получаю это предупреждение "Указанное значение" 12.12.1902 "не соответствует требуемому формату" гггг-ММ-дд "". и row.dta_example заполняется, например, «Среда, 12 декабря 2012 г. .......», и я хочу, чтобы все было так, как я написал «12.12.2012»
0

Пытаться:

$scope.list[i].dta_example = new Date(key.dta_example);

Кроме того, 'null' не = null. Этот тест не будет работать, если ваш код каким-либо образом не вернет строку "null".

  • 0
    это именно то, что я говорю, это терпит неудачу ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню