Я загружаю список фильмов в формате JSON, и каждый фильм имеет продолжительность. Фрагмент JSON:
"duration": "PT157M"
Эта длительность отображается в виде строки, где число - это длительность в мин. Как мне конвертировать число в формат "ч: м" например: 150 = "2:30", так что это в представлении?
Я пытался использовать javascript с фиктивными данными (чтобы посмотреть, работает ли он), но я предполагаю, что пользовательский фильтр умнее?
.controller('MovieController', ['$scope', 'MovieFactory',
function($scope, MovieFactory) {
MovieFactory.get().then(function(response) {
$scope.movies = response.data;
// extract numbers from string
$scope.duration = 'PT150M';
$scope.regex = /\d+/g;
$scope.found = $scope.duration.match($scope.regex);
console.log($scope.found);
// convert number to hours:min
function timeConvert(n) {
$scope.num = n;
$scope.hours = ($scope.num / 60);
$scope.rhours = Math.floor($scope.hours);
$scope.minutes = ($scope.hours - $scope.rhours) * 60;
$scope.rminutes = Math.round($scope.minutes);
return $scope.finalResult = $scope.num + " min = " + $scope.rhours + " hour(s) and " + $scope.rminutes + " minute(s).";
}
console.log(timeConvert($scope.found));
});
}]);
Вид:
<div ng-repeat="movie in movies">
<p>Duration must be here: {{movie.duration}} </p>
</div>
Я прочитал много документации, к сожалению, без удачи.