I\'m using KnockoutJS version 2.0.0
If I\'m looping through all properties of an object, how can I test whether each property is a ko.observable
? Here\
I'm using
ko.utils.unwrapObservable(vm.key)
Update: As of version 2.3.0, ko.unwrap
was added as substitute for ko.utils.unwrapObservable
Knockout includes a function called ko.isObservable()
. You can call it like ko.isObservable(vm[key])
.
Update from comment:
Here is a function to determine if something is a computed observable:
ko.isComputed = function (instance) {
if ((instance === null) || (instance === undefined) || (instance.__ko_proto__ === undefined)) return false;
if (instance.__ko_proto__ === ko.dependentObservable) return true;
return ko.isComputed(instance.__ko_proto__); // Walk the prototype chain
};
UPDATE: If you are using KO 2.1+ - then you can use ko.isComputed
directly.
Knockout has the following function which I think is what you are looking for:
ko.isObservable(vm[key])
To tack on to RP Niemeyer's answer, if you're simply looking to determine if something is "subscribable" (which is most often the case). Then ko.isSubscribable is also available.