The requireinstruksi memberi Anda controller untuk direktif Anda nama sebagai argumen keempat untuk Anda linkfungsi. (Anda dapat menggunakan ^untuk mencari pengontrol pada elemen induk; ?menjadikannya opsional.) Jadi, require: 'ngModel'memberi Anda pengontrol untuk ngModeldirektif, yang merupakanngModelController .
Pengontrol arahan dapat ditulis untuk menyediakan API yang dapat digunakan oleh arahan lain; dengan ngModelController, Anda mendapatkan akses ke fungsionalitas khusus yang ada di ngModeldalamnya, termasuk mendapatkan dan menyetel nilainya. Perhatikan contoh berikut:
<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();
};
}
}
});
Direktif ini menggunakan ngModelpengontrol untuk mendapatkan dan menyetel nilai warna dari colorpicker. Lihat contoh JSFiddle ini: http://jsfiddle.net/BinaryMuse/AnMhx/
Jika Anda menggunakan require: 'ngModel', Anda mungkin juga tidak boleh menggunakan ngModel: '='dalam ruang lingkup isolasi Anda; yang ngModelControllermemberi Anda semua akses yang Anda butuhkan untuk mengubah nilainya.
Contoh bawah di beranda AngularJS juga menggunakan fungsionalitas ini (kecuali menggunakan pengontrol khusus, bukan ngModel).
Adapun casing direktif, misalnya, ngModelvs ng-modelvs data-ng-model: sementara Angular mendukung penggunaan beberapa bentuk di DOM, ketika Anda merujuk ke direktif dengan nama (misalnya, saat membuat direktif, atau menggunakan require), Anda selalu menggunakan lowerCamelCase bentuk nama.
ng-model='property'