Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 通过重复事件更新角度日期_Javascript_Angularjs - Fatal编程技术网

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

Javascript 通过重复事件更新角度日期,javascript,angularjs,Javascript,Angularjs,我有一个结束日期,用户可以输入结束计划事件的日期。但是,我希望用户能够在事件结束之前输入多次重复的事件。例如,如果他们说希望它每周重复一次,持续4周,那么我希望能够计算结束日期,并更新该值。事实上,我不太确定我应该如何处理这个问题,因为我对angular还比较陌生 我是这么想的 function EventEditCtrl($scope) { init(); function init() { $scope.event = { Acti

我有一个结束日期,用户可以输入结束计划事件的日期。但是,我希望用户能够在事件结束之前输入多次重复的事件。例如,如果他们说希望它每周重复一次,持续4周,那么我希望能够计算结束日期,并更新该值。事实上,我不太确定我应该如何处理这个问题,因为我对angular还比较陌生

我是这么想的

function EventEditCtrl($scope) {
    init();

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

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

您只需要计算结束日期并将其分配给模型。最难的部分是用JavaScript进行日期计算。你可以使用momentjs这样的库来简化事情

$scope.updateEndDate = function () {
    var endDate = moment().add($scope.event.Repeated, parseInt($scope.event.Occurrences));
    $scope.event.ActiveEndTimeDate = endDate.format('YYYY/MM/DD');
};
小提琴:

这种方法需要使用
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');
});
小提琴: