Urutan Tautan Pos Arahan Sudut Salah (1.3)

Saya memiliki situasi di mana saya memiliki dua arahan khusus bersarang. Biasanya fungsi tautan pos diaktifkan dalam urutan terbalik, tetapi dalam kasus khusus saya fungsi tersebut diaktifkan dari atas ke bawah, sehingga menghalangi kemampuan saya untuk memodifikasi DOM dengan andal. Saya telah mencoba membuat ulang masalah ini di Plunker tetapi selalu benar jadi saya benar-benar bingung!

<message-container> <------ The template for this directive contains the directive <scrollable-content> </message-container>

Konten yang Dapat Digulir

return { restrict: 'E', templateUrl: 'core/app/partials/common/scrollable.html', transclude: true, replace: true, scope: true, link: function ($scope, $element, $attrs) {....

Wadah Pesan

return { restrict: 'E', replace: true, scope: true, templateUrl: 'core/app/partials/chat/message-container.html', link: function ($scope, $element) {....

Karena saya tidak dapat mereproduksi ini dengan arahan lain atau dalam plunker, apakah ada yang tahu alasan bagaimana atau mengapa hal ini bisa terjadi? Pada dasarnya dalam fungsi penautan saya untuk wadah pesan, saya ingin menambahkan beberapa pendengar acara di markup arahan konten yang dapat digulir. Elemen dalam fungsi link untuk daftar pesan hanya memiliki mark-up dan bukan konten yang dikompilasi.

Bantuan apa pun dihargai!

PEMBARUAN: Templat kami sudah di-cache sebelumnya


person Shepless    schedule 17.10.2014    source sumber
comment
Apakah Anda menggunakan element.bind direktif tingkat atas untuk mengikat peristiwa tersebut?   -  person Guillermo    schedule 18.10.2014
comment
Kami tidak. Ini benar-benar membuat kami bingung.   -  person Shepless    schedule 18.10.2014


Jawaban (1)


Beberapa bulan yang lalu saya mendalami hal ini, sepertinya salah. Namun sebenarnya ada logika dibalik hal ini. templateUrl mengunduh template async, dan memicu kompilasi untuk node tersebut setelah template kembali. Ini bahkan akan bekerja dengan cara ini jika Anda menggunakan templat yang di-cache. "Pemuatan" tempateURL akan dilakukan setelah siklus intisari saat ini siap. Bahkan jika templatnya sudah ada di $tempateCache Ada beberapa diskusi tentang ini, dan dokumentasi diadaptasi untuk memberikan penekanan pada perilaku ini.

Jika Anda benar-benar membutuhkan pesanan, gunakan templat statis. Atau gunakan trik seperti ini:

 template: $templateCache.get('myTemplate.html'),

Tentu saja Anda perlu memuat template Anda terlebih dahulu agar ini berfungsi!

person Sander Elias    schedule 18.10.2014
comment
Maaf, saya seharusnya menyebutkan bahwa templat kami sudah di-cache sebelumnya sehingga tidak ada permintaan asinkron - person Shepless; 18.10.2014
comment
Tidak ada bedanya dalam situasi ini. Keuntungannya adalah Anda dapat menggunakan trik yang saya tunjukkan tanpa adaptasi lagi. - person Sander Elias; 18.10.2014
comment
Jadi begitu. Saya akan mencobanya dan melaporkannya kembali. Terima kasih. - person Shepless; 19.10.2014
comment
Ini telah memperbaiki masalahnya. Terima kasih banyak atas bantuan Anda! - person Shepless; 19.10.2014