Angular JS:使用ng重复计算每行两次之间的差
Angular JS: Calculate Difference between two times for each row using ng-repeat
我是AngularJS的新手。我只是想减去两列之间的时间,并使用ng repeat将结果保存到每行的第三列
预期输出:
9:00 10:30 90(in minutes)
HTML:
<table id="t1" style="border:none;">
<tr><th>Start</th><th>Stop</th><th>Downtime(In Min)</th><th>Reason</th></tr>
<tr ng-repeat="item in invoice.items">
<td><input type="text" ng-model="item.start"></td>
<td><input type="text" ng-model="item.stop" ng-blur="diff()" ></td>
<td><input type="text" ng-bind="item.down" ></td>
<td style="border:none;"><a href ng-click="remove(item)">X</a></td>
</tr>
<tr style="border:none;">
<td style="border:none;"><a href ng-click="add()">+</a></td>
</tr>
</table>
AngularJS:
var mapp = angular.module('MyApp',[]);
mapp.controller('myCtrl',function($scope,$http){
$scope.diff=function(){
$scope.item.down=$scope.item.stop-$scope.item.start }
});
我无法将ng模型值从ng重复获取到控制器中。每当我添加行时,应该调用该函数。请帮帮我。提前谢谢。
您可以尝试以下操作:
注意: 此答案基于时间以24小时格式接受的假设
JSFiddle
function testCtrl($scope) {
$scope.diff = "";
$scope.$watch("startTime", function(newValue, oldValue) {
$scope.diff = computeDiff(newValue, $scope.endTime);
});
$scope.$watch("endTime", function(newValue, oldValue) {
$scope.diff = computeDiff($scope.startTime, newValue);
});
function computeDiff(startTime, endTime) {
if (startTime && endTime) {
var s_hr = startTime.split(":")[0] || 0;
var s_min = startTime.split(":")[1] || 0;
var e_hr = endTime.split(":")[0] || 0;
var e_min = endTime.split(":")[1] || 0;
return Math.abs((parseInt(e_hr) - parseInt(s_hr)) * 60) + Math.abs(parseInt(e_min) - parseInt(s_min))
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script>
<div ng-app>
<div ng-controller="testCtrl">
<input type="text" ng-model="startTime">
<input type="text" ng-model="endTime">
<input type="text" ng-model="diff">
</div>
</div>
以下是使用ng-blur
和ng-repeat
更新的Fiddle。
我很好奇为什么要使用ngBlur
?相反,只需更改:
<td><input type="text" ng-bind="item.down" ></td>
至
<td><input type="text" ng-init="diff(item)">{{item.down}}</td>
在你的控制器中:
$scope.diff = function(item) {
item.down = convertToDateTime(item.stop) - convertToDateTime(item.start);
}
这里,convertToDateTime
是一个将输入字符串转换为日期(但不修改它!)并返回时间戳的函数。由于您没有指定字符串的格式,所以我将"从字符串中提取日期"部分留给您。
相关文章:
- 如何获取两次约会之间的天数
- Angular JS:使用ng重复计算每行两次之间的差
- 如何使用javascript记录两次按钮按下之间的响应时间(以秒为单位)
- 我怎样才能计算两次之间的差值
- Nodegit-获取两次提交之间的差异
- 如何在两次约会之间进行脸书查询以获得帖子
- 两次验证之间的角度过滤器不起作用
- 使用$(“[property=value]”).click(),我希望两次单击之间有一个延迟
- 检查两次之间的时间间隔
- 两次之间的Javascript
- 使用jQuery和javascript计算两次之间的差异,并以分钟为单位返回
- 两次点击之间的差异并没有很好地处理这段代码
- 两次之间的时间间隔
- 如何计算两次之间的工作时间
- 如何计算两次按键之间的时间间隔事件
- IE7: javascript画布代码曾经在IE7中工作,现在不能了.这两次修订之间发生了什么导致了这种情况
- 计算两次约会之间有多少工作日和周末
- 如何在两次约会之间留出时间
- JavaScript在两次调用之间占用额外时间
- 试图在两次之间找出半小时的时间