Я нахожусь в ситуации, когда мне бы хотелось получить доступ к экземплярам, созданным из компонента Ractive из родительского Ractive. .Доступ к активным компонентам из их родителя
var myComponent = Ractive.extend(
{
uselessFunction: function()
{
alert('Hello ' + this.data.who);
}
}
);
var myRactive = new Ractive(
{
el: 'body',
components:
{
mycomponent: myComponent
},
template: '{{#people}}<rv-mycomponent who="{{.}}"/>{{/people}}',
data:
{
people:
[
'Mike',
'Charly',
'April'
]
}
}
);
Запуск этого я получу 3 экземпляра myComponent. Теперь то, что я хотел бы иметь, было бы каким-то образом назвать бесполезную функцию на любом экземпляре компонента из метода myRactive (или даже лучше для всех экземпляров).
Существует, конечно, множество возможных обходных путей (например, использование наблюдателей в компонентах, а затем изменение некоторых общих свойств), но я надеялся на какой-то встроенный интерфейс. Увы, насколько я просеиваю через myRactive Object, я не могу найти ссылку на экземпляры компонентов. Хотя я подозреваю, что это один из них, так как mySomponent (teardown) также вызывает teardown() для каждого компонента.
Глобальное пространство имен не является вариантом, поскольку я работаю с установкой AMD. Но на данный момент я использую довольно схожую обходную процедуру, где передаю объект до тех компонентов, которые вводят инстанции. Найти обходные пути - это не моя проблема, хотя;). Невозможно ли просто иметь свойство в активном объекте (например, «подкомпоненты» или что-то еще), которое содержит ссылки на экземпляры компонента? – skeptic35
Я вижу, что экземпляр компонента содержит ссылку на «parent» в .component.parentFragment.root, поэтому теоретически я мог бы использовать это, чтобы вставить ссылку на мой компонент в родительский. Увы,.свойство компонента еще не доступно, когда вызываются какие-либо из функций обратного вызова (beforeInit, complete, init). – skeptic35
Кажется, что каждый компонент должен знать о своих детях. Я не могу придумать один фреймворк, который я использовал, который * не *, по крайней мере, не на рабочем столе. – Joel