Saya memiliki arahan dengan isolate-scope (sehingga saya dapat menggunakan kembali arahan di tempat lain), dan ketika saya menggunakan arahan ini dengan ng-repeat
, itu gagal berfungsi.
Saya telah membaca semua dokumentasi dan jawaban Stack Overflow tentang topik ini dan memahami masalahnya. Saya yakin saya telah menghindari semua tipu muslihat biasa.
Jadi saya mengerti bahwa kode saya gagal karena cakupan yang dibuat oleh ng-repeat
direktif. Direktif saya sendiri membuat lingkup-isolasi dan melakukan pengikatan data dua arah ke objek dalam lingkup induk. Direktif saya akan menetapkan nilai objek baru ke variabel terikat ini dan ini berfungsi dengan sempurna ketika direktif saya digunakan tanpa ng-repeat
(variabel induk diperbarui dengan benar). Namun, dengan ng-repeat
, tugas membuat variabel baru dalam ng-repeat
cakupan dan variabel induk tidak melihat perubahannya. Semua ini seperti yang diharapkan berdasarkan apa yang telah saya baca.
Saya juga membaca bahwa ketika ada beberapa arahan pada elemen tertentu, hanya satu ruang lingkup yang dibuat. Dan bahwa a priority
dapat disetel di setiap arahan untuk menentukan urutan penerapan arahan; direktif diurutkan berdasarkan prioritas dan kemudian fungsi kompilasinya dipanggil (cari kata prioritas di http://docs.angularjs.org/guide/directive ).
Jadi saya berharap saya dapat menggunakan prioritas untuk memastikan bahwa arahan saya berjalan terlebih dahulu dan akhirnya membuat lingkup-isolasi, dan ketika ng-repeat
dijalankan, itu menggunakan kembali lingkup-isolasi daripada membuat lingkup yang secara prototipikal mewarisi dari lingkup induk. The ng-repeat
negara dokumentasi yang yang berjalan direktif pada tingkat prioritas 1000
. Tidak jelas apakah 1
itu tingkat prioritas yang lebih tinggi atau tingkat prioritas yang lebih rendah. Ketika saya menggunakan tingkat prioritas 1
dalam arahan saya, tidak ada bedanya, jadi saya mencoba 2000
. Tapi itu memperburuk keadaan: ikatan dua arah undefined
saya menjadi dan arahan saya tidak menampilkan apa pun.
Saya telah membuat biola untuk menunjukkan masalah saya . Saya telah mengomentari priority
pengaturan dalam arahan saya. Saya memiliki daftar objek nama dan direktif disebut name-row
yang menunjukkan bidang nama depan dan belakang di objek nama. Ketika nama yang ditampilkan diklik, saya ingin mengatur selected
variabel dalam lingkup utama. Larik nama, selected
variabel diteruskan ke name-row
direktif menggunakan data-binding dua arah.
Saya tahu bagaimana membuat ini bekerja dengan memanggil fungsi di lingkup utama. Saya juga tahu bahwa jika selected
ada di dalam objek lain, dan saya mengikat objek luar, semuanya akan bekerja. Tetapi saya tidak tertarik dengan solusi tersebut saat ini.
Sebaliknya, pertanyaan yang saya miliki adalah:
- Bagaimana cara mencegah
ng-repeat
pembuatan cakupan yang secara prototipikal mewarisi dari lingkup induk, dan malah membuatnya menggunakan lingkup-isolasi direktif saya? - Mengapa tingkat prioritas
2000
dalam arahan saya tidak berfungsi? - Dengan Batarang, apakah mungkin untuk mengetahui jenis scope yang digunakan?
scope: true
untuk direktif Anda. Lihat juga (jika Anda belum melakukannya) stackoverflow.com/questions/14914213/… Juga, hanya karena sebuah direktif akan digunakan di banyak tempat tidak berarti kita harus secara otomatis menggunakan lingkup isolasi.