J'utilise KnockoutJS version 2.0.0
Si je parcourt toutes les propriétés d'un objet, comment puis-je tester si chaque propriété est un ko.observable
? Voici ce que j'ai essayé jusqu'à présent:
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);
}
Mais jusqu'à présent, tout est faux.
javascript
knockout.js
Adam Rackis
la source
la source
$.isArray(vm[key]())
, mais savez-vous comment différencier les observables d'unko.computed
??ko.isComputed
fonction. Le code serait l'équivalent de ce que j'ai ajouté à la réponse ci-dessus.Knockout a la fonction suivante qui, je pense, est ce que vous recherchez:
la source
Pour revenir à la réponse de RP Niemeyer, si vous cherchez simplement à déterminer si quelque chose est "souscriptible" (ce qui est le plus souvent le cas). Puis
ko.isSubscribable
est également disponible.la source
j'utilise
Mise à jour : à partir de la version 2.3.0, a
ko.unwrap
été ajouté en remplacement deko.utils.unwrapObservable
la source