Saya terus mengalami masalah dengan masalah debugging di templat KnockoutJS. Katakanlah saya ingin mengikat ke properti yang disebut " Menggunakan debugger Chrome hanya memberi tahu saya:
Apakah ada alat, teknik, atau gaya pengkodean yang membantu saya mendapatkan informasi lebih lanjut tentang masalah yang mengikat? Jawaban: Satu hal yang sering saya lakukan ketika ada masalah dengan data apa yang tersedia pada lingkup tertentu adalah mengganti templat / bagian dengan sesuatu seperti:
Atau, jika Anda ingin versi yang sedikit lebih mudah dibaca:
Ini akan memuntahkan data yang sedang terikat pada ruang lingkup itu dan membiarkan Anda memastikan bahwa Anda bersarang dengan tepat. Pembaruan: pada KO 2.1 , Anda dapat menyederhanakannya menjadi:
Sekarang argumen diteruskan ke Jika Anda menggunakan Chrome untuk pengembangan, ada ekstensi yang sangat bagus (yang saya tidak berafiliasi) yang disebut debugger konteks Knockoutjs yang menunjukkan kepada Anda konteks yang mengikat langsung di panel Elemen Alat Pengembang. Tetapkan Handler handler sekali , di suatu tempat di file perpustakaan JavaScript Anda.
daripada hanya menggunakannya suka ini:
Keuntungan
Saya menemukan satu lagi yang dapat membantu. Saya sedang men-debug beberapa binding dan mencoba menggunakan contoh Ryans. Saya mendapat kesalahan bahwa JSON menemukan lingkaran lingkaran.
Namun, menggunakan pendekatan ini menggantikan nilai data-bind dengan yang berikut:
Sekarang jika saya klik pada elemen PRE sambil membuka jendela debug krom, saya mendapatkan jendela variabel lingkup terisi dengan baik. Menemukan cara yang lebih baik untuk itu:
Panduan langkah demi langkah
Apa ini ilmu hitam?Trik ini adalah kombinasi fitur Chrome $ 0- $ 4 dan
metode utilitas KnockoutJS . Singkatnya, Chrome mengingat unsur-unsur yang telah Anda pilih di Chrome Developer Toolbar dan mengekspos elemen ini di bawah alias Sisi lain dari trik ini adalah metode utilitas KnockoutJS yaitu ko.dataFor dan ko.contextFor:
Ingat, Konsol JavaScript Chrome adalah lingkungan runtime JavaScript yang berfungsi penuh. Ini
berarti Anda tidak terbatas hanya dengan melihat variabel. Anda dapat menyimpan output Selamat men-debug! Lihatlah hal yang sangat sederhana yang saya gunakan:
Atau
Kemudian dalam html, katakanlah, Anda memiliki:
Ganti saja dengan
Lebih maju:
Nikmati :) MEMPERBARUI Hal lain yang menjengkelkan adalah ketika Anda mencoba untuk mengikat ke nilai yang tidak ditentukan. Bayangkan dalam contoh di atas bahwa objek data hanya {} bukan {value: 'some text'}. Dalam hal ini Anda akan berada dalam masalah, tetapi dengan tweak berikut Anda akan baik-baik saja:
Cara termudah untuk melihat data apa yang diteruskan ke pengikatan adalah dengan menjatuhkan data ke konsol:
Knockout akan mengevaluasi nilai untuk pengikatan teks (pengikatan apa pun sebenarnya dapat digunakan di sini ) dan mem-flush $ data ke konsol panel browser. Semua jawaban lain akan bekerja dengan baik, saya hanya menambahkan apa yang ingin saya lakukan: Dalam pandangan Anda (dengan asumsi Anda sudah terikat ViewModel):
Kode KO:
Ini akan menjeda kode dalam debugger, dan Jika Anda mengembangkan di Visual studio dan IE saya suka ini lebih Ini bekerja untuk saya:
|