在深入研究这个问题之后,我发现答案是基于将内部立方体侧面注入立方体实例本身。
这是一个概念上的变化——而不是将立方体的边作为立方体本身的参数,实际发生的是立方体的每个边在创建时将自身添加到立方体中。
这是通过标记CubeComponent
如下来实现的:
@NgComponent(
visibility: NgDirective.CHILDREN_VISIBILITY,
selector: 'cube',
templateUrl: '../../lib/cube/cube_component.html',
cssUrl: '../../lib/cube/cube_component.css',
publishAs: 'ctrl'
)
class CubeComponent {
var sides = new List<CubeSideComponent>();
add(CubeSideComponent side) {
sides.add(side);
}
}
这意味着<cube>
组件(它是组件的父<side>
组件)通过将可见性提及为NgDirective.CHILDREN_VISIBILITY
)将自己暴露给它的每个子组件。
定义了一个构造函数,CubeSideComponent
它接收一个父对象CubeController
作为参数,然后通过调用“add”方法将自己(this)添加到多维数据集的边集合中:
@NgComponent(
selector: 'side',
templateUrl: '../../lib/cube/cube_side_component.html',
cssUrl: '../../lib/cube/cube_side_component.css',
publishAs: 'ctrl',
)
class CubeSideComponent {
CubeSideComponent (CubeComponent cube) {
cube.add(this);
}
}
这就是新的标记:
<cube>
<side>Content of side A</side>
<side>Content of side B</side>
...
</cube>