通过重复事件更新角度日期

时间:2014-04-04 14:50:48

标签: javascript angularjs

我有一个结束日期,用户可以输入日期来结束预定的活动。但是,我希望用户能够在事件结束前重复输入多次。例如,如果他们说他们希望每周重复一次,持续4周,那么我希望能够计算结束日期,并更新该值。我实际上并不确定如何处理角度相对较新的问题。

http://jsfiddle.net/rXHzc/

我在想这样的事情?

function EventEditCtrl($scope) {
    init();

    function init() {
        $scope.event = {
            ActiveEndTimeDate: '',
            Occurrences: '',
            Repeated: ''
        }
    }

    $scope.updateEndDate = function () {
        //update event?
    };
}

1 个答案:

答案 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');
});

小提琴:http://jsfiddle.net/c92ud/