Ich verwende KnockoutJS Version 2.0.0
Wie kann ich testen, ob jede Eigenschaft eine ist, wenn ich alle Eigenschaften eines Objekts durchlaufe ko.observable
? Folgendes habe ich bisher versucht:
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);
}
Aber bisher ist alles falsch.
javascript
knockout.js
Adam Rackis
quelle
quelle
$.isArray(vm[key]())
, aber wissen Sie, wie man Observables von einem unterscheidetko.computed
?ko.isComputed
Funktion enthalten. Der Code entspricht dem, was ich der obigen Antwort hinzugefügt habe.Knockout hat die folgende Funktion, nach der Sie meiner Meinung nach suchen:
quelle
Um auf die Antwort von RP Niemeyer einzugehen, wenn Sie lediglich feststellen möchten, ob etwas "abonnierbar" ist (was meistens der Fall ist). Dann
ko.isSubscribable
ist auch verfügbar.quelle
Ich benutze
Update : Ab Version 2.3.0
ko.unwrap
wurde als Ersatz für hinzugefügtko.utils.unwrapObservable
quelle