2015-04-27 19 views
8

Tôi có chỉ thị sau đây mà tôi đưa vào lĩnh vực đầu vào sử dụng datepicker góc-ui-bootstrap:Đang cập nhật góc 1,2-1,3 phá vỡ chỉ thị của tôi

angular.module('directives.validators.date', []) 
.directive('validDate',[ '$filter', function ($filter) { 
    return { 
    restrict:'A', 
    require:'ngModel', 
    link: function (scope, el, attrs, ngModel) { 
     var pattern = /^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d$/; 
     ngModel.scope = scope; 
     ngModel.attrs = attrs; 
     el.on('blur',function() { 
     if(typeof ngModel.$viewValue === "object"){   
      var str = $filter('date')(ngModel.$viewValue, "dd.MM.yyyy"); 
      ngModel.$setViewValue(str); 
     } 

     if(ngModel.$viewValue){ 
      if(ngModel.$viewValue!=="" && !pattern.test(ngModel.$viewValue)){ 
       ngModel.$setValidity("date",false); 
      } 
     } 
     }); 

     scope.$watch(function() { 
      return ngModel.$modelValue; 
     }, 
     function() { 
     if(ngModel.$pristine){ //if the data has just been fetched, convert it to date format. 
      if (typeof ngModel.$viewValue === "number"){ 
      var date = new Date(ngModel.$viewValue); 
      //var str = $filter('date')(date, "dd.MM.yyyy"); 
      ngModel.$setViewValue(date); 
      ngModel.$setPristine(true); 
      var formName = $("form")[0].name; 
      ngModel.scope[formName].$setPristine(true); 
      ngModel.$setValidity("date",true); 
      } 
     } 
     if(ngModel.$viewValue){ //when the filed is changed, if it is corrected set that the date is valid 
      if(ngModel.$viewValue==="" || pattern.test(ngModel.$viewValue)){ 
      ngModel.$setValidity("date",true); 
      } 
     } 
     }); 
    } 
    }; 
}]); 

Tôi đã có một vấn đề với các thành phần datepicker rằng tôi biểu mẫu sẽ không gửi nếu trường datepicker không được chạm (ngay cả khi nó có dữ liệu trong đó, ví dụ như khi tôi chỉnh sửa tài nguyên). Về cơ bản nó đã tính biểu mẫu là không hợp lệ mặc dù đã gửi một ngày tốt. Chỉ thị này đã sửa chữa điều đó, nhưng khi tôi nâng cấp góc của tôi lên 1,3 thì chỉ thị không còn hoạt động nữa.

Tôi cần thay đổi điều gì để đưa chỉ thị này hoạt động trở lại?

+0

đã bạn nâng cấp góc-ui cũng? – charlietfl

+2

Chính xác thì không hiệu quả? Bất kỳ lỗi nào trong bảng điều khiển? Tạo một số plunker đơn giản mà tái tạo vấn đề của bạn. –

+0

Như tôi đã nói hình thức của tôi sẽ không gửi vì nó được coi là không hợp lệ (mặc dù nó có giá trị, chỉ có nó là không chạm vào). Đối với angular-ui, phiên bản mới nhất dành cho góc 1,2, do đó không có phiên bản nào cho 1.3. – user2352164

Trả lời

0

Here bạn có thể tìm thấy điều gì đó về một sự thay đổi có ảnh hưởng đến phá vỡ ngModel trong 1.3:

Kể từ khi HTML5 mẫu xác nhận chế xác nhận giá trị đầu vào, chúng ta cũng nên xác nhận đối với các viewValue. Trong khi điều này làm việc trong lõi lên đến góc 1.2, 1.3, chúng tôi đã thay đổi không chỉ xác nhận, nhưng cách input[date]input[number] được xử lý - họ phân tích giá trị đóng góp của họ vào DateNumber tương ứng, mà không có thể được xác nhận bởi một regex ...

Các vấn đề liên quan