Estou usando o KnockoutJS versão 2.0.0
Se estou percorrendo todas as propriedades de um objeto, como posso testar se cada propriedade é um ko.observable
? Aqui está o que tentei até agora:
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);
}
Mas até agora tudo é falso.
javascript
knockout.js
Adam Rackis
fonte
fonte
$.isArray(vm[key]())
, mas você sabe como diferenciar observáveis de umko.computed
??ko.isComputed
função. O código seria o equivalente ao que adicionei à resposta acima.Knockout tem a seguinte função que eu acho que você está procurando:
fonte
Para continuar com a resposta de RP Niemeyer, se você está simplesmente procurando determinar se algo é "assinável" (o que geralmente é o caso). Então
ko.isSubscribable
também está disponível.fonte
estou a usar
Atualização : a partir da versão 2.3.0,
ko.unwrap
foi adicionado como substituto parako.utils.unwrapObservable
fonte