Angular ng-dirty不使用datepicker指令切换

时间:2016-08-11 17:13:51

标签: angularjs

我有一个自定义指令,用于将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。

1 个答案:

答案 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);
            }
        });
    }
};

});