我有一个自定义指令,用于将jQuery UI Datepicker应用于某些输入。我可以选择一个日期并更新输入。但是,当我回复结果时。编辑的输入(控件)未标记为脏,因此更改永远不会保存。见下文..
<td>
<input type="text" jqdatepicker name="Delegation.StartDate" ng-model="delegation.StartDate" />
</td>
<td>
<input type="text" jqdatepicker name="Delegation.EndDate" ng-model="delegation.EndDate" />
</td>
App.directive('jqdatepicker', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
element.datepicker({
dateFormat: 'm/dd/yy',
onSelect: function (date) {
scope.date = date;
scope.$apply();
ngModelCtrl.$setDirty(); <--doesn't work
}
});
}
};});
我尝试过使用scope,element,ngModel,并且无法将控件的状态从pristine变为脏。在保存时,我为那些具有ng-dirty类的行废弃行(tr)并处理它们。有关如何做到这一点的任何想法?我在大约8个其他页面上使用相同的方法没有问题,但那些不使用指令/ datepickers。
答案 0 :(得分:1)
经过大量的反复试验和阅读。我终于开始工作了!以下是指令。
App.directive('jqdatepicker', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
element.datepicker({
dateFormat: 'm/dd/yy',
onSelect: function (date) {
console.log(ngModelCtrl);
ngModelCtrl.$setViewValue(date);
}
});
}
};
});