Saya menggunakan KnockoutJS versi 2.0.0
Jika saya mengulang semua properti dari suatu objek, bagaimana cara menguji apakah setiap properti adalah a ko.observable
? Inilah yang saya coba sejauh ini:
var vm = {
prop: ko.observable(''),
arr: ko.observableArray([]),
func: ko.computed(function(){
return this.prop + " computed";
}, vm)
};
for (var key in vm) {
console.log(key,
vm[key].constructor === ko.observable,
vm[key] instanceof ko.observable);
}
Tapi sejauh ini semuanya salah.
javascript
knockout.js
Adam Rackis
sumber
sumber
$.isArray(vm[key]())
, tetapi apakah Anda tahu cara membedakan yang dapat diamati dariko.computed
??ko.isComputed
fungsi. Kode tersebut akan sama dengan apa yang saya tambahkan ke jawaban di atas.Knockout memiliki fungsi berikut yang menurut saya adalah apa yang Anda cari:
sumber
Untuk mengacu pada jawaban RP Niemeyer, jika Anda hanya ingin menentukan apakah sesuatu "dapat dilanggan" (yang paling sering terjadi). Kemudian
ko.isSubscribable
juga tersedia.sumber
saya menggunakan
Pembaruan : Pada versi 2.3.0,
ko.unwrap
ditambahkan sebagai penggantiko.utils.unwrapObservable
sumber