Ini adalah HTML untuk direktif saya:
<textarea data-modal="modal" data-mydir ng:model="abc"></textarea>
Dalam arahan saya, saya memiliki ini:
return {
require: 'ngModel',
replace: true,
scope: {
modal: '=modal',
ngModel: '=',
pid: '=pid'
},
Dapatkah seseorang memberi tahu saya, apa pentingnya Requirement: 'ngModel'? Saya melihat ini dalam banyak arahan yang berbeda. Bisakah saya menyebut ini data-modal?
Saya bingung karena ketika saya mengubahnya menjadi data-modal saya mendapat pesan dari Angular mengatakan
Controller 'ngModel', required by directive 'textarea', can't be found!
ng-model='property'
Jawaban:
The
require
instruksi memberi Anda controller untuk direktif Anda nama sebagai argumen keempat untuk Andalink
fungsi. (Anda dapat menggunakan^
untuk mencari pengontrol pada elemen induk;?
menjadikannya opsional.) Jadi,require: 'ngModel'
memberi Anda pengontrol untukngModel
direktif, 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 dingModel
dalamnya, termasuk mendapatkan dan menyetel nilainya. Perhatikan contoh berikut:Direktif ini menggunakan
ngModel
pengontrol 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 menggunakanngModel: '='
dalam ruang lingkup isolasi Anda; yangngModelController
memberi 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,
ngModel
vsng-model
vsdata-ng-model
: sementara Angular mendukung penggunaan beberapa bentuk di DOM, ketika Anda merujuk ke direktif dengan nama (misalnya, saat membuat direktif, atau menggunakanrequire
), Anda selalu menggunakan lowerCamelCase bentuk nama.sumber
require: 'ngModel'
harus digunakanngModel: '='
?Seperti yang dinyatakan dalam dokumentasi Membuat Arahan Kustom : (Pertama untuk pertanyaan Anda di komentar)
Jawabannya:
Contoh:
Kedua,
?ngModel
mewakili apa?Saat menggunakan direktif Anda, itu memaksanya untuk digunakan bersama dengan atribut / pengontrol
ng-model
.The
require
pengaturan(Ekstrak dari buku AngularJS oleh Brad Green & Shyam Seshadri)
sumber
The
require:'ngModel'
danrequire:'^ngModel'
memungkinkan Anda untuk menyuntikkan model melekat unsur atau elemen induknya yang direktif terikat.Ini pada dasarnya cara termudah untuk meneruskan ngModel ke dalam fungsi tautan / kompilasi alih-alih meneruskannya menggunakan opsi cakupan. Setelah Anda memiliki akses ke ngModel, Anda dapat mengubah nilainya menggunakan
$setViewValue
, membuatnya kotor / bersih menggunakan$formatters
, menerapkan pengamat, dll.Di bawah ini adalah contoh sederhana untuk meneruskan ngModel dan mengubah nilainya setelah 5 detik.
Demo: http://jsfiddle.net/t2GAS/2/
sumber