我试图将Bootstrap Datepicker from eternicode与angularjs结合使用。
var app=angular.module('myApp', [])
.controller('dateCtrl', function($scope) {
// Case 1:
$scope.datepick = '';
// Case 2:
//$scope.datepick = '25.04.1986';
$scope.setFirstDate = function() {
$scope.datepick= '13.10.1960';
};
$scope.setAnotherDate = function() {
$scope.datepick = '20.02.1967';
};
});
$(document).ready(function(){
$('.datepicker').datepicker({
autoclose: true,
format: 'dd.mm.yyyy',
clearBtn: true,
todayBtn: 'linked',
todayHighlight: true,
weekStart: '1',
calendarWeeks: true,
keyboardNavigation: false
});
});
基本上,它工作正常。但是当我以编程方式更改日期时,BS Datepicker会忽略它。这表明,当您最初加载小提琴并按照以下步骤操作时:
1)点击'先来我!'
2)选择输入字段,而不触及datepicker
3)跳出标签,按Esc,或点击日期选择器以外的任何地方(关闭它而不选择日期)
您将看到输入字段现在为空。
这不会发生,因为this question中建议的日期格式无效:在小提琴和测试用例2中取消注释第6行。重复上述步骤。日期字段现在显示' 25.04.1986'。
此外,在这两种情况下,您都可以测试点击日期选择器,然后重复步骤1-3。输入字段将显示BS Datepicker选择的最后日期。
{{datepick}}
表明,ng-model始终准确无误,因此此问题与this或this问题不重复。 看到angularjs始终知道实际日期,我不知道scope.apply如何解决我的问题。
这告诉我:BS Datepicker正在跟踪他自己,并且只会记住datepicker本身选择的初始日期或日期。当关闭而不选择新的时,它会将输入字段重置为此记忆值。
那我怎么能防止这种情况发生呢?
答案 0 :(得分:1)
所以,我找到了解决这个问题的方法。要防止Datepicker重置输入值,请添加:
forceParse: false
到您的Datepicker选项。请参阅updated jsfiddle。
尽管这解决了手头的问题,但请记住,Datepicker将不再解析/检查/更正任何输入。
我相信这是一个错误,并会在Github上创建一个问题。