AngularJS Datepicker - 未选择日期

时间:2015-12-08 20:43:02

标签: angularjs input datepicker

我有一个模型可以打开一个表单来编辑用户信息。表单有多个使用datepicker的输入字段。某些日期字段不是必需的。但是,如果数据库中的某个日期为空,则会自动填写今天的日期,并在用户单击保存按钮后保存,即使不打算保存也是如此。

这是我的HTML

<div class="form-group">
    <label class="control-label">Date</label>
    <div>
       <input class="form-control" type="date" placeholder="mm/dd/yyyy" uib-datepicker-popup ng-model="editUser.DatesTemp" datepicker-options="dateOptions" is-open="status.opened" min-date="minDate" max-date="maxDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close">
    </div>
</div>

这是脚本文件

angular.module("myApp", ['ui.bootstrap', 'gm.datepickerMultiSelect']);

// MAIN CONTROLLER
angular.module("myApp").controller("MainController", function ($scope, $http) {
$scope.Data = data;
console.log(data);

   $scope.userEdit = function (index) {
       $scope.editUser = data.userInfo[index];
       //using moment to format date
       $scope.editUser.DatesTemp = moment($scope.editUser.Dates[0]).toDate();
   };

});

// DATE CONTROLLER
angular.module("myApp").controller("modalEditUserController", function ($scope, $http) {
   $scope.postUpdate = function () {
       //using moment to format date
       $scope.editUser.Dates[0] = moment($scope.editUser.DatesTemp).format('MM/DD/YYYY h:mm:ss A');
   };
});

// DATE FILTER
angular.module("myApp").filter("asDate", function () {
   return function (input) {
      return new Date(input);
   };
});

1 个答案:

答案 0 :(得分:0)

看看我之前不熟悉的api,似乎有&#34;事件&#34;可以被称为。也许可以使用&#34; changeDate&#34;如果用户未输入日期,则调用将数据库中的日期设置为null。

他们的代码示例:

$('#dp5').datepicker()
.on('changeDate', function(ev){
    if (ev.date.valueOf() < startDate.valueOf()){
        ....
    }
});

也许找到一种在代码中实例化的方法。

此外,不是必需的,但是编写控制器的快速提示。该模块可以声明为变量,然后与每个后续控制器/过滤器一起使用。只是代码的捷径。

var app = angular.module("myApp", ['ui.bootstrap', 'gm.datepickerMultiSelect']);

app.controller("MainController", function ($scope, $http) {
   ...    
});
app.controller("modalEditUserController", function ($scope, $http) {
   ...
});