Tôi đã xây dựng một vài mở rộng cho đầu vào và cách tốt nhất (được cho là) để mở rộng các liên kết ngModel hiện có đang sử dụng ngModelController trong chỉ thị của bạn. Bạn có thể yêu cầu một bộ điều khiển chỉ thị khác bằng cách sử dụng thuộc tính "require". documentation for ngModelController is here
Điều này sẽ cho phép bạn nhận/đặt các giá trị mô hình cũng như mở rộng hoặc thay thế hành vi xác thực nếu cần. Bởi vì bây giờ bạn có thể mở rộng trong việc kết hợp các chỉ thị đầu vào AngularJS, bạn cũng có thể muốn xem các chỉ thị đầu vào bên trong AngularJS để biết các ví dụ về cách thức hoạt động này. Họ cũng có thể làm việc trong tiếp tuyến với ngFormController như là một phụ huynh cho toàn bộ hình thức. Điều này đã cho tôi một thời gian để nắm bắt nên kiên nhẫn nhưng nó là của xa cách tốt nhất để làm điều này.
Tôi sẽ tránh phạm vi cách ly ở đây, chúng có thể phức tạp, không phải lúc nào cũng chơi tốt với các chỉ thị khác (vì vậy thường chỉ sử dụng nó trên các yếu tố mới hoặc chỉ có một chỉ thị sẽ tồn tại trên đó). Tôi sẽ thiết kế một cái gì đó như thế này:
return {
restrict: 'E',
template: tpl,
replace: true,
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
// Use attrs to access values for attributes you have set on the lement
// Use ngModelController to access the model value and add validation, parsing and formatting
// If you have an attribute that takes an expression you can use the attrs value along with $scope.$watch to check for changes and evaluate it or the $parse service if you just want to evaluate it.
}
tôi khuyên bạn nên nhận như quen thuộc như bạn có thể với thiết kế chỉ thị như đầu vào tùy chỉnh có thể nhận được khá phức tạp tùy thuộc vào những gì họ làm (chúng tôi đã xây dựng được đầu vào tùy chỉnh mà thêm +/- nút như cũng như những định dạng số như tỷ lệ phần trăm, tiền tệ hoặc chỉ số bằng dấu phẩy khi bạn nhập vào chúng). Ngoài các tài liệu ngModelController đây là những hữu ích để xem xét:
Nguồn
2013-10-15 21:39:41
Bạn có thể thử 'ng-required' thay thế và' ngRequired' trong phạm vi chỉ thị của bạn. – jpmorin
Bạn cũng có thể xem những gì nằm trong thuộc tính 'attrs.required' trong hàm liên kết của bạn và xem có cái gì đó không. – jpmorin
Có lý do nào bạn cần một phạm vi cách ly cho điều này không? Nó có vẻ đơn giản hơn nhưng thường thì không. Tôi muốn đề nghị một khác nhau tham gia một yêu cầu về "ngModelController" và sử dụng "attrs" và $ phạm vi. $ Xem nếu bạn cần năng động ràng buộc. Hãy cho tôi biết nếu bạn muốn một giải pháp hoàn chỉnh hơn, nếu bạn đăng một jsFiddle hoặc một cái gì đó tôi sẽ cố gắng giúp đỡ. –