Itu semua adalah contoh layanan yang membantu dalam rendering tampilan AngularJS (meskipun $parse
dan $interpolate
dapat digunakan di luar domain ini). Untuk mengilustrasikan apa peran dari setiap layanan, mari kita ambil contoh dari bagian HTML ini:
var imgHtml = '<img ng-src="/path/{{name}}.{{extension}}">'
dan nilai pada ruang lingkup:
$scope.name = 'image';
$scope.extension = 'jpg';
Diberikan markup ini di sini adalah apa yang dibawa setiap layanan ke meja:
$compile
- dapat mengambil seluruh markup dan mengubahnya menjadi fungsi penghubung yang, ketika dieksekusi terhadap lingkup tertentu akan mengubah sepotong teks HTML menjadi dinamis, langsung DOM dengan semua arahan (di sini ng-src
:) bereaksi terhadap perubahan model. Seseorang akan memanggilnya sebagai berikut: $ compile (imgHtml) ($ scope) dan akan mendapatkan elemen DOM dengan semua batasan event DOM sebagai hasilnya. $compile
memanfaatkan $interpolate
(antara lain) untuk melakukan tugasnya.
$interpolate
tahu cara memproses string dengan ekspresi interpolasi tertanam, mis /path/{{name}}.{{extension}}
. : . Dengan kata lain dapat mengambil string dengan ekspresi interpolasi, ruang lingkup dan mengubahnya menjadi teks yang dihasilkan. Orang dapat menganggap $interpolation
layanan sebagai bahasa template berbasis string yang sangat sederhana. Mengingat contoh di atas orang akan menggunakan layanan ini seperti: $interpolate("/path/{{name}}.{{extension}}")($scope)
untuk mendapatkan path/image.jpg
string sebagai hasilnya.
$parse
digunakan oleh $interpolate
untuk mengevaluasi ekspresi individu ( name
, extension
) terhadap cakupan. Ini dapat digunakan untuk membaca dan mengatur nilai untuk ekspresi yang diberikan. Misalnya, untuk mengevaluasi name
ekspresi yang akan dilakukan: $parse('name')($scope)
untuk mendapatkan nilai "gambar". Untuk mengatur nilai yang akan dilakukan:$parse('name').assign($scope, 'image2')
Semua layanan tersebut bekerja bersama untuk menyediakan UI langsung di AngularJS. Tetapi mereka beroperasi pada level yang berbeda:
$parse
hanya mementingkan ekspresi individu ( name
, extension
). Ini adalah layanan baca-tulis.
$interpolate
dibaca saja dan berkaitan dengan string yang berisi banyak ekspresi ( /path/{{name}}.{{extension}}
)
$compile
adalah jantung dari mesin AngularJS dan dapat mengubah string HTML (dengan arahan dan ekspresi interpolasi) menjadi DOM langsung.
pkozlowski.opensource
sumber
$interpolate
di AnjularJS dan akhirnya saya mendapat jawaban yang ringkas dan informatif.$ interpolate tidak memiliki akses tulis ke variabel $ scope seperti yang kita miliki dalam $ eval dan $ parse
$ parse, $ interpolate ---> perlu disuntikkan tetapi $ eval tidak perlu disuntikkan di controller atau di mana ia digunakan
$ parse, $ interpolate memberikan fungsi yang dapat dievaluasi terhadap konteks apa pun tetapi $ eval selalu dievaluasi terhadap $ scope.
$ eval dan $ interpolate di belakang layar hanya menggunakan $ parse.
sumber
Inilah penjelasan yang lucu.
sumber