javascript - AngularJS:如何创建一个自定义过滤器,可以将字符串的数字转换为 h:m 格式?
问题描述
我正在将一个 JSON 电影列表加载到范围中,并且每部电影都有一个持续时间。JSON 片段:
"duration": "PT157M"
此持续时间显示为字符串,其中数字是以分钟为单位的持续时间。如何将数字转换为“h:m”格式。例如: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>
我已经阅读了很多文档,遗憾的是没有任何运气。
解决方案
$scope.duration.match($scope.regex);
将匹配的数字作为具有一个元素的数组返回(在本例中为字符串“150”)。
你想要这样的东西:parseInt($scope.duration.match($scope.regex)[0]);
推荐阅读
- ios - 在 Objective C 中调度块的执行
- python - 流媒体源必须使用 writeStream.start() 执行
- python-3.x - 如何调用并等待从 Python 并行运行的 1,000 个 AWS Lambda?
- android - 如何将我的日期从 datepickerfragment 发送到另一个片段
- clojure - 命名空间中的函数没有被读取?
- c - memset和初始化(数组)之间的区别?
- saleor - 找出销售员
- django - 获取模板中的相关模型集
- javascript - 自动更新 ssl node.js
- c++ - vkEnumerateInstanceExtensionProperties : pLayerName 参数的含义是什么?