我发现自己处于想要从父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对象一样,我似乎无法找到对组件实例的引用。虽然我怀疑有一个,但是看作是myComponent的拆卸()还会在每个组件上调用teardown()。
全局命名空间并不是一个选择,因为我正在使用AMD设置。但是现在我正在使用一个相当类似的解决方法,我将对象传递给获取实例注入的组件。尽管找到解决方法并不是我的问题;)。 难道只有在rative对象中有一个属性(比如'subcomponents'或其他),它拥有对组件实例的引用吗? – skeptic35
我看到组件实例在.component.parentFragment.root中保存对“父”的引用,因此理论上我可以使用它将对组件的引用注入到父组件中。唉,这个。当任何回调函数(beforeInit,complete,init)被调用时,组件属性不可用。 – skeptic35
似乎每个组件都应该了解其子项。我想不出一个我用过*的*,至少在桌面上没有。 – Joel