我有一个结束日期,用户可以输入日期来结束预定的活动。但是,我希望用户能够在事件结束前重复输入多次。例如,如果他们说他们希望每周重复一次,持续4周,那么我希望能够计算结束日期,并更新该值。我实际上并不确定如何处理角度相对较新的问题。
我在想这样的事情?
function EventEditCtrl($scope) {
init();
function init() {
$scope.event = {
ActiveEndTimeDate: '',
Occurrences: '',
Repeated: ''
}
}
$scope.updateEndDate = function () {
//update event?
};
}
答案 0 :(得分:1)
您只需计算结束日期并将其分配给模型。困难的部分是在JavaScript中进行日期数学运算。您可以使用像momentjs这样的库来简化事情......
$scope.updateEndDate = function () {
var endDate = moment().add($scope.event.Repeated, parseInt($scope.event.Occurrences));
$scope.event.ActiveEndTimeDate = endDate.format('YYYY/MM/DD');
};
小提琴:http://jsfiddle.net/cxtNp/
此方法需要使用ngChange
来监控表单值的更改并触发更新。它依赖于将ngChange
应用于所有可以触发更改的位置,并在标记中泄漏太多逻辑。更简洁的方法是在模型更改时触发更改。
执行此操作的一种方法是使用手表......
$scope.$watch('[event.Repeated, event.Occurrences]', function () {
var endDate = moment().add($scope.event.Repeated, parseInt($scope.event.Occurrences));
$scope.event.ActiveEndTimeDate = endDate.format('YYYY/MM/DD');
});