Я использую KnockoutJS версии 2.0.0
Если я перебираю все свойства объекта, как я могу проверить, является ли каждое свойство свойством ko.observable
? Вот что я пробовал до сих пор:
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);
}
Но пока все ложно.
javascript
knockout.js
Адам Рэкис
источник
источник
$.isArray(vm[key]())
, но знаете ли вы, как отличить наблюдаемые от наблюдаемогоko.computed
??ko.isComputed
функцию. Код будет эквивалентен тому, что я добавил к ответу выше.Knockout имеет следующую функцию, которую, я думаю, вы ищете:
источник
Чтобы присоединиться к ответу Р.П. Нимейера, если вы просто хотите определить, является ли что-то «подлежащим подписке» (что чаще всего имеет место). Тогда
ko.isSubscribable
тоже есть в наличии.источник
я использую
Обновление : Начиная с версии 2.3.0,
ko.unwrap
было добавлено вместоko.utils.unwrapObservable
источник