Я не могу заставить эту работу работать. Я пытаюсь заменить любое пустое пространство буквой «Т», чтобы преобразовать мою строку в формат даты, но я не могу заставить ее работать. Мой массив работает, когда я console.log и вижу, что это формат yyyy-MM-ddTHH: mm. Но когда я устанавливаю соединение с фильтром ng-repeat, он ничего не делает. Вот мой код и ссылку на JSbin https://jsbin.com/nesedenoce/edit?html,js,console,outputУгловой фильтр для замены строки в 3d-массиве
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<title>date filter</title>
</head>
<body>
<div ng-app="test" ng-controller="controller">
<table class="table table-bordered table-striped">
<tr id="theader">
<thead>
<th>Talk Title</th>
<th>Start Time</th>
<th>End Time</th>
</thead>
</tr>
<tr ng-repeat="item in returnedObj | dateFilter ">
<td>{{item.presentation.title}}</td>
<td>{{item.presentation.start_time | date: "h:mm a"}}</td>
<td>{{item.presentation.end_time | date: "h:mm a"}}</td>
</tr>
</table>
</div>
</body>
</html>
JS
var app = angular.module('test', []);
app.controller("controller", ['$scope', function($scope){
$scope.returnedObj = [{"presentation":{"title":"Introduction to Algebra",
"persons":{"1":{"id":22,"start_time":"2017-05-19 08:00","end_time":"2017-05-19 08:20"},
"speakers":[{"firstname":"Charles","lastname":"Hardin"}]}}}];
}]);
app.filter('dateFilter', function(){
return function(item){
var correctTimeFilter = item.filter(function(i){
if(i.presentation.start_time || i.presentation.end_time){
console.log(i.presentation.start_time.replace(/\s/g, 'T'));
console.log(i.presentation.end_time.replace(/\s/g, 'T'));
return i.presentation.start_time.replace(/\s/g, 'T');
return i.presentation.end_time.replace(/\s/g, 'T');
}
else
return null;
})
return correctTimeFilter;
}
});
непонятно, зачем вам нужен фильтр на массиве. Также 'start_time' вложен в объект' people'. Целесообразно только анализировать дату? – charlietfl
Обратите внимание, что, вероятно, было бы легче сделать 'person' массив также способом' speakers' – charlietfl
Я поместил '$ scope.returnedObj' в массив, но в моем исходном коде я помещаю тысячи записей, которые выглядят так от PHP, который был json_encoded. Но формат выглядит очень похоже на мою оригинальную строку json. – missgg