我创建了一个简单的datepicker指令,它有一个“选项”。
所以我用一组选项启动了datepicker,然后由于业务逻辑我更改了这些选项,但是没有刷新。
在这个例子中,我需要将“endDate”的de datepicker开始日期更新为与“startDate”相同的日期。
这是我的代码:
指令:
function datepicker() {
return {
restrict: "A",
scope: {
options : '='
},
link: function(scope, element, attrs) {
var opts = scope.options || {};
element.datepicker({
keyboardNavigation: false,
forceParse: false,
autoclose: true,
useCurrent: true,
format: opts.format || 'dd/mm/yyyy',
startDate : opts.startDate || ''
});
}
};
}
控制器:
$scope.evaluation = {};
$scope.startDatepickerOptions = {
startDate : new Date()
};
$scope.endDatepickerOptions = {
startDate : new Date()
};
$scope.$watch('evaluation.startDate', function(newValue) {
$scope.endDatepickerOptions.startDate = newValue;
});
查看:
<input type="text" ng-model="evaluation.startDate" name="startDate" datepicker options="startDatepickerOptions"/>
<input type="text" ng-model="evaluation.endDate" name="endDate" datepicker options="endDatepickerOptions"/>
答案 0 :(得分:1)
所以这是解决方案:
我需要在指令链接功能上添加一个等于观察者。到目前为止,由于日期/字符串问题,我已经实现了moment.js library
这是最终的代码:
指令(链接功能):
link: function(scope, element, attrs) {
var opts = scope.options || {};
element.datepicker({
keyboardNavigation: false,
forceParse: false,
autoclose: true,
useCurrent: true,
format: opts.format || 'dd/mm/yyyy',
startDate : opts.startDate || ''
});
scope.$watch('options.startDate', function(newValue) {
if(newValue) {
element.datepicker('setStartDate', newValue);
element.datepicker('setDate', "");
}
});
}
<强>控制器强>:
$scope.startDatepickerOptions = {
startDate : moment().toDate()
};
$scope.endDatepickerOptions = {
startDate : moment().toDate()
};
$scope.$watch('evaluation.startDate', function(newValue) {
if(newValue)
$scope.endDatepickerOptions['startDate'] = moment(newValue, "DD-MM-YYYY").toDate();
});