Estoy usando KnockoutJS versión 2.0.0
Si estoy recorriendo todas las propiedades de un objeto, ¿cómo puedo probar si cada propiedad es un ko.observable
? Esto es lo que he probado hasta ahora:
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);
}
Pero hasta ahora todo es falso.
javascript
knockout.js
Adam Rackis
fuente
fuente
$.isArray(vm[key]())
, pero ¿sabe cómo diferenciar observables de unko.computed
?ko.isComputed
función. El código sería el equivalente a lo que agregué a la respuesta anterior.Knockout tiene la siguiente función que creo que es lo que estás buscando:
fuente
Para agregar a la respuesta de RP Niemeyer, si simplemente está buscando determinar si algo es "suscribible" (que es el caso más frecuente). Entonces
ko.isSubscribable
también está disponible.fuente
Estoy usando
Actualización : A partir de la versión 2.3.0,
ko.unwrap
se agregó como sustituto deko.utils.unwrapObservable
fuente