Các require
cung cấp cho bạn bộ điều khiển cho chỉ thị mà bạn đặt tên là đối số thứ tư cho link
hàm của bạn . (Bạn có thể sử dụng ^
để tìm kiếm bộ điều khiển trên phần tử mẹ; ?
làm cho nó trở thành tùy chọn.) Vì vậy, require: 'ngModel'
cung cấp cho bạn bộ điều khiển cho ngModel
chỉ thị, là mộtngModelController
.
Bộ điều khiển chỉ thị có thể được viết để cung cấp các API mà các chỉ thị khác có thể sử dụng; với ngModelController
, bạn có quyền truy cập vào chức năng đặc biệt được tích hợp sẵn ngModel
, bao gồm cả việc nhận và thiết lập giá trị. Hãy xem xét ví dụ sau:
<input color-picker ng-model="project.color">
app.directive('colorPicker', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
element.colorPicker({
// initialize the color to the color on the scope
pickerDefault: scope.color,
// update the ngModel whenever we pick a new color
onColorChange: function(id, newValue) {
scope.$apply(function() {
ngModel.$setViewValue(newValue);
});
}
});
// update the color picker whenever the value on the scope changes
ngModel.$render = function() {
element.val(ngModel.$modelValue);
element.change();
};
}
}
});
Lệnh này sử dụng ngModel
bộ điều khiển để lấy và đặt giá trị của màu từ trình chọn màu. Xem ví dụ JSFiddle này: http://jsfiddle.net/BinaryMuse/AnMhx/
Nếu bạn đang sử dụng require: 'ngModel'
, có lẽ bạn nên không còn được sử dụng ngModel: '='
trong phạm vi cô lập của bạn; những ngModelController
cung cấp cho bạn tất cả các truy cập bạn cần phải thay đổi giá trị.
Ví dụ dưới cùng trên trang chủ AngularJS cũng sử dụng chức năng này (ngoại trừ việc sử dụng bộ điều khiển tùy chỉnh ngModel
).
Đối với cách viết hoa của một chỉ thị, ví dụ: ngModel
vs ng-model
vs data-ng-model
: trong khi Angular hỗ trợ sử dụng nhiều biểu mẫu trên DOM, khi bạn tham chiếu đến một chỉ thị bằng tên (ví dụ: khi tạo một chỉ thị hoặc sử dụng require
), bạn luôn sử dụng LowerCamelCase hình thức của tên.
ng-model='property'