Saya menggunakan KnockoutJS dan memiliki tampilan utama dan model tampilan. Saya ingin dialog (UI jQuery satu) muncul dengan tampilan lain yang terikat model tampilan anak terpisah.
HTML untuk konten dialog diambil menggunakan AJAX jadi saya ingin dapat menelepon ko.applyBindings
setelah permintaan selesai, dan saya ingin mengikat model tampilan anak untuk hanya bagian dari HTML yang dimuat melalui ajax di dalam dialog dialog.
Apakah ini benar-benar mungkin atau apakah saya perlu memuat SEMUA pandangan saya dan melihat model ketika halaman awalnya dimuat dan kemudian menelepon ko.applyBindings
sekali?
sumber
ko.cleanNode(document.getElementById("one")
untuk membersihkan barang-barang atauko.removeNode(document.getElementById("one")
untuk membersihkan barang-barang dan menghapus simpul dari DOM.cleanNode
danremoveNode
tidak akan menghapus event handler, jadi berhati-hatilah. Dalam beberapa kasus, lebih baik menggunakantemplate
atauwith
mengikat area tersebut, sehingga Anda memiliki elemen baru yang diberikan.$(element).unbind();
menghapus semua penangan.Sementara jawaban Niemeyer adalah jawaban yang lebih benar untuk pertanyaan, Anda juga bisa melakukan hal berikut:
Ini berarti Anda tidak perlu menentukan elemen DOM, dan Anda bahkan dapat mengikat banyak model ke elemen yang sama, seperti ini:
sumber
with
tidak murah, lihat: tautanSaya telah berhasil mengikat model khusus ke suatu elemen saat runtime. Kode di sini: http://jsfiddle.net/ZiglioNZ/tzD4T/457/
Yang menarik adalah saya menerapkan atribut data-bind ke elemen yang tidak saya definisikan:
sumber
Anda harus melihat
with
pengikatan, sertacontrolsDescendantBindings
http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.htmlsumber