(ссылка http://jsfiddle.net/kapLv0mt/4/)
У меня есть
Member = Ractive.extend({
template : "<div>{{name}}</div>",
computed : {male : function(){this.get('gender')=='m'}}
})
ff = new Ractive({
el : '#container',
template : "there are {{male_count}} males{{#family}}<member/>{{/family}}",
components : {member : Member},
data : {family : [
{name:'Fred',gender:'m'},
{name:'Wilma',gender:'f'},
{name:'Rocky',gender: 'm'},
{name:'Bubbles',gender: '?'}
]},
computed : { male_count : function(){
return _(this.findAllComponents('member')).filter(function(mem){return mem.get('male')}).length;
}
}
})
Во время инициализации ractive возникает ошибка, а также вычисляемое свойство «male_count» не возвращает правильное значение. Ошибка инициализации возникает из-за того, что свойство включено в шаблон, но даже в этом случае вычисляемое свойство не возвращает правильное значение, возможно, потому, что оно было неправильно вычислено при инициализации.
Как я могу инициализировать атрибут объекта Ractive, который зависит от компонентов?
Изменить: по предложению ответчика я упомяну здесь, что пример кода очень сильно упрощен по сравнению с моим фактическим кодом. Алгоритм фильтрации компонентов в фактическом коде основан примерно на 9 критериях сравнения, включая даты, совпадения текста, числовые диапазоны, где пороговые значения вводятся через пользовательский интерфейс для фильтра списка. По этой причине я хотел бы придерживаться идеи (как в примере) реализации теста фильтра в компоненте.