Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:如何创建一个自定义过滤器,将字符串的数字转换为h:m格式?_Javascript_Json_Angularjs_Oop_Filter - Fatal编程技术网

Javascript AngularJS:如何创建一个自定义过滤器,将字符串的数字转换为h:m格式?

Javascript AngularJS:如何创建一个自定义过滤器,将字符串的数字转换为h:m格式?,javascript,json,angularjs,oop,filter,Javascript,Json,Angularjs,Oop,Filter,我正在将电影的JSON列表加载到范围中,每部电影都有一个持续时间。JSON代码段: "duration": "PT157M" 此持续时间显示为字符串,其中数字是以分钟为单位的持续时间。如何将数字转换为“h:m”格式。ex:150=“2:30”那么这是在视图中 我尝试使用javascript处理虚拟数据(看看它是否有效),但我认为定制过滤器更智能 .controller('MovieController', ['$scope', 'MovieFactory', function($sc

我正在将电影的JSON列表加载到范围中,每部电影都有一个持续时间。JSON代码段:

"duration": "PT157M"
此持续时间显示为字符串,其中数字是以分钟为单位的持续时间。如何将数字转换为“h:m”格式。ex: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));

});

}]);
视图:


持续时间必须在此处:{movie.Duration}}


我已经阅读了很多文档,遗憾的是没有任何运气。

$scope.duration.match($scope.regex)
将匹配的数字作为一个包含一个元素的数组返回(本例中为“150”的字符串)


您需要类似这样的内容:
parseInt($scope.duration.match($scope.regex)[0])

显示您尝试的自定义筛选代码。从文档中的示例开始。看见或者从这个开始。
<div ng-repeat="movie in movies">
 <p>Duration must be here: {{movie.duration}} </p> 
</div>