Używam KnockoutJS wersji 2.0.0
Jeśli przeglądam wszystkie właściwości obiektu, jak mogę sprawdzić, czy każda właściwość jest ko.observable
? Oto, czego próbowałem do tej pory:
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);
}
Ale na razie wszystko jest fałszywe.
javascript
knockout.js
Adam Rackis
źródło
źródło
$.isArray(vm[key]())
, ale czy wiesz, jak odróżnić obserowalne odko.computed
?ko.isComputed
funkcję. Kod byłby odpowiednikiem tego, co dodałem do odpowiedzi powyżej.Knockout ma następującą funkcję, która moim zdaniem jest tym, czego szukasz:
źródło
Aby skorzystać z odpowiedzi RP Niemeyera, jeśli po prostu chcesz określić, czy coś jest „subskrybowane” (co jest najczęściej spotykane). Wtedy
ko.isSubscribable
jest również dostępny.źródło
używam
Aktualizacja : od wersji 2.3.0
ko.unwrap
został dodany jako zamiennikko.utils.unwrapObservable
źródło