Rumah > Artikel > hujung hadapan web > Cara Observables berfungsi dalam KnockoutJs
Kandungan ini pada asasnya adalah terjemahan bahan asal. Hasratnya adalah untuk mengetahui tentang KnockoutJs untuk Magento 2 dan mencipta kandungan dalam bahasa Portugis tentang KnockouJs.
KnockoutJs memperkenalkan konsep observables, iaitu sifat yang boleh dipantau dan dikemas kini secara automatik apabila nilainya berubah. Fungsi ini membolehkan antara muka pengguna bertindak balas secara dinamik kepada perubahan dalam Model.
dataUntuk mencipta observable dalam KnockoutJs, anda boleh menggunakan fungsi ko.observable() dan memberikan nilai awal kepadanya. Untuk mengakses nilai semasa boleh diperhatikan, anda boleh menganggapnya sebagai fungsi. Untuk hanya memerhati sesuatu tanpa nilai awal, hanya panggil sifat Boleh Diperhatikan tanpa parameter.
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
langganan dalam observables ialah mekanisme yang membolehkan anda dimaklumkan apabila nilai observable berubah. Ia penting untuk menjejaki perubahan dalam observables dan bertindak balas terhadap perubahan ini, mengemas kini antara muka pengguna atau mengambil tindakan lain apabila perlu.
Kaedah subscribe() ***menerima fungsi *panggilan balik yang akan dilaksanakan apabila nilai observable diubah suai. Fungsi panggil balik menerima sebagai argumen nilai baharu boleh diperhatikan. Fungsi ini menerima tiga parameter: panggilan balik ialah fungsi yang dipanggil apabila pemberitahuan berlaku, sasaran (pilihan) mentakrifkan nilai ini dalam fungsi panggilan balik dan acara (pilihan; lalai ialah perubahan) ialah nama acara untuk menerima pemberitahuan.
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
Satu lagi perkara penting ialah anda boleh menyimpan langganan dalam pembolehubah dan, jika perlu, membatalkan langganan menggunakan kaedah dispose(). Ini berguna apabila anda ingin melumpuhkan pengemaskinian UI buat sementara atau kekal sebagai tindak balas kepada perubahan dalam boleh diperhatikan.
let myObservable = ko.observable(0); // Criando uma subscription no observable myObservable.subscribe(function (newValue) { console.log('Novo valor do observable:', newValue); }, scope, event);
Kaedah untuk menentukan jenis yang boleh diperhatikan
Array Boleh Cerap ialah lanjutan daripada boleh diperhatikan dan digunakan untuk menangani senarai data yang perlu diperhatikan. Tidak seperti array JavaScript standard, Array Boleh Diperhatikan membolehkan anda menjejaki perubahan pada menyenaraikan data secara automatik dan mengemas kini antara muka pengguna secara reaktif.
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
Array Boleh Diperhatikan mempunyai kaedah khusus yang membolehkan anda menambah, mengalih keluar dan memanipulasi item secara reaktif. Antara kaedah ini ialah:
Untuk fungsi yang mengubah suai kandungan tatasusunan, seperti tekan dan splice, kaedah KO secara automatik mencetuskan mekanisme penjejakan kebergantungan supaya semua pendengar berdaftar dimaklumkan tentang perubahan dan antara muka anda dikemas kini secara automatik, yang bermaksud terdapat perbezaan yang ketara antara menggunakan kaedah KO (observableArray.push(...), dll) dan kaedah array JavaScript asli (observableArray() .push(.. .)), kerana yang terakhir tidak menghantar sebarang pemberitahuan kepada array pelanggan bahawa kandungan mereka telah berubah.
Walaupun boleh menggunakan langgan dan mengakses observableArray seperti mana-mana yang boleh diperhatikan, KnockoutJs juga menyediakan kaedah yang sangat pantas untuk mengetahui cara array boleh diperhatikan telah berubah (item yang baru ditambah, dipadamkan atau dialihkan). Anda boleh melanggan perubahan array seperti berikut:
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
Computed Observables ialah fungsi yang bergantung pada satu atau lebih observables dan akan dikemas kini secara automatik apabila mana-mana kebergantungan ini berubah. Fungsi akan dipanggil sekali setiap kali mana-mana kebergantungannya berubah, dan sebarang nilai yang dikembalikan akan dihantar kepada observables, seperti elemen UI atau computed observables .
Perbezaan utama antara Computed Observable dan Observables ialah Computed Observables tidak menyimpan nilai secara langsung; sebaliknya, mereka bergantung pada pemerhatian lain untuk mengira nilainya. Ini bermakna bahawa nilai Computed Observable sentiasa dikemas kini secara automatik apabila mana-mana observable yang bergantung padanya diubah suai.
let myObservable = ko.observable(0); // Criando uma subscription no observable myObservable.subscribe(function (newValue) { console.log('Novo valor do observable:', newValue); }, scope, event);
Kaedah Boleh Cerap Berkomputer
Parameter kedua kepada ko.computed menetapkan nilai ini apabila menilai boleh diperhatikan yang dikira. Tanpa menghantarnya, tidak mungkin untuk merujuk this.firstName() atau this.lastName().
Terdapat konvensyen yang mengelakkan keperluan untuk menjejaki ini sepenuhnya: jika pembina model pandang anda menyalin rujukan kepada ini ke dalam pembolehubah yang berbeza (secara tradisinya dipanggil diri), anda boleh menggunakan diri sepanjang model pandangan dan tidak perlu risau tentang ia ditakrifkan semula untuk merujuk kepada sesuatu yang lain.
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
Oleh kerana diri ditangkap pada penutupan fungsi, ia kekal tersedia dan konsisten dalam mana-mana fungsi bersarang, seperti penilai boleh cerap terhitung. Konvensyen ini lebih berguna apabila ia melibatkan pengendali acara.
Jika computable observable hanya mengira dan mengembalikan nilai berdasarkan beberapa kebergantungan yang boleh diperhatikan, adalah lebih baik untuk mengisytiharkannya sebagai ko.pureComputed dan bukannya ko.computed.
let myObservable = ko.observable(0); // Criando uma subscription no observable myObservable.subscribe(function (newValue) { console.log('Novo valor do observable:', newValue); }, scope, event);
Apabila computed observable diisytiharkan sebagai tulen, penilainya tidak langsung mengubah suai objek atau keadaan lain, KnockoutJs boleh mengurus penilaian semula dan penggunaan memorinya dengan lebih cekap. KnockoutJs akan menggantung atau melepaskannya secara automatik jika tiada kod lain yang mempunyai pergantungan aktif padanya.
Boleh Cerap Berkomputer Boleh Tulis ialah lanjutan daripada Boleh Cerap Berkomputer yang membolehkan penciptaan boleh cerap berkomputer yang boleh dikemas kini melalui pembacaan dan penulisan . Tidak seperti Cerhati Berkomputer konvensional, yang hanya mengira nilainya berdasarkan pemerhatian lain dan tidak menyimpan nilai secara langsung, Boleh Cerap Berkomputer Boleh Ditulis boleh menyimpan nilai dan juga menyediakan fungsi untuk mengemas kini nilai ini apabila perlu.
Untuk mencipta Boleh Diperhatikan Pengiraan Boleh Tulis, anda perlu menggunakan fungsi ko.computed dengan objek konfigurasi yang mengandungi dua sifat utama: baca dan tulis. Sifat baca mengandungi fungsi pengiraan untuk menentukan nilai boleh diperhatikan, manakala sifat tulis mengandungi fungsi yang dipanggil apabila anda ingin mengemas kini nilai boleh diperhatikan.
Atas ialah kandungan terperinci Cara Observables berfungsi dalam KnockoutJs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!