Saya memiliki elemen yang saya ingin mengikatkan html padanya.
<div ng-bind-html="details" upper></div>
Itu bekerja. Sekarang, bersamaan dengan itu saya juga memiliki arahan yang terikat pada html yang terikat:
$scope.details = 'Success! <a href="#/details/12" upper>details</a>'
Tetapi arahan upper
dengan div dan anchor tidak dievaluasi. Bagaimana cara membuatnya bekerja?
angularjs
angularjs-directive
Amitava
sumber
sumber
Jawaban:
Saya juga menghadapi masalah ini dan setelah berjam-jam mencari di internet saya membaca komentar @ Chandermani, yang terbukti menjadi solusinya. Anda perlu memanggil arahan 'kompilasi' dengan pola ini:
HTML:
JS:
Anda dapat melihat biola yang berfungsi di sini
sumber
function(scope, element, attrs)
, dari mana Anda mendapatkan tiga argumen, cakupan , elemen , dan atribut tersebut ?link
properti. Mereka akan diteruskan secara otomatis setiap kalilink
dipanggil oleh kerangka Angular. Mereka akan selalu tersedia.$sce.trustAsHtml
dari fungsi lain untuk membuat HTML yang akan "dikompilasi" dengan petunjuk ini, Anda harus menghapusnya. Terima kasih kepada @apoplexyTerima kasih atas jawaban hebat vkammerer. Satu pengoptimalan yang saya rekomendasikan adalah tidak menonton setelah kompilasi berjalan satu kali. $ Eval dalam ekspresi jam tangan dapat memiliki implikasi kinerja.
Ini biola bercabang dua dan diperbarui.
sumber
.directive()
kode dalam kode yang diposting di jawaban tidak.$eval
- Anda bisa menggunakanattrs.compile
langsung sebagai pengganti fungsi anonim yang diawasi. Jika Anda hanya memberikan ekspresi string, angular akan tetap memanggilnya$eval
.Tambahkan direktif angular-bind-html-compile ini
Gunakan seperti ini:
Sangat mudah :)
sumber
Sayangnya saya tidak memiliki reputasi yang cukup untuk berkomentar.
Saya tidak bisa membuat ini bekerja selama berabad-abad. Saya memodifikasi
ng-bind-html
kode saya untuk menggunakan arahan khusus ini, tetapi saya gagal menghapus$scope.html = $sce.trustAsHtml($scope.html)
yang diperlukan agar ng-bind-html berfungsi. Segera setelah saya menghapus ini, fungsi kompilasi mulai bekerja.sumber
Bagi siapa pun yang berurusan dengan konten yang telah dijalankan di
$sce.trustAsHtml
sini, itulah yang harus saya lakukan secara berbedaIni hanya
link
bagian dari direktif karena saya menggunakan tata letak yang berbeda. Anda juga perlu menyuntikkan$sce
layanan$compile
.sumber
Solusi terbaik yang saya temukan! Saya menyalinnya dan berfungsi persis seperti yang saya butuhkan. Terima kasih, terima kasih, terima kasih ...
dalam fungsi tautan direktif yang saya miliki
dan dalam template direktif:
sumber