如何在 AngularJS 中定义可组合组件
How to define composable components in AngularJS
在AngularJS (1.x)中,我们如何创建一个可重复使用的小部件(组件),它具有用于其他小部件(组件)的插入点(插槽)?
假设我们有一个名为 "verticalsplitter" 的 component/directive。它的目的是将屏幕区域划分为 "top" 和 "bottom" 区域(可能允许用户调整大小、折叠等)。
现在假设我们有一堆其他丰富的组件,例如richtextview、treeview、videoplayer 和 gridview。
一个 page/view 1 我想要一个 verticalsplitter,顶部是 richtextview,底部是 treeview。在 page/view 2 我想要一个顶部有视频播放器、底部有网格视图的垂直拆分器。
第 1 页
<html>
<body>
<verticalsplitter>
<top ng-initialSize="30%">
<richtextview />
</top>
<bottom ng-initialSize="70%">
<treeview />
</bottom>
</verticalsplitter>
</body>
</html>
第 2 页
<html>
<body>
<verticalsplitter ng-locked="true">
<top>
<videoplayer />
</top>
<bottom>
<gridview />
</bottom>
</verticalsplitter>
</body>
</html>
我怎样才能做到这一点?如果组件无法实现(并且我需要使用指令进行嵌入),那没关系。
组件可以嵌入。在 AngularJS Developers Guide for Components:
中明确说明
app.component("verticlesplitter", {
transclude: {
'topPart': 'top',
'bottomPart': 'bottom'
},
template: `
<div style="border: 1px solid black;">
<div class="top" ng-transclude="topPart"></div>
<div>Something in the middle</div>
<div class="bottom" ng-transclude="bottomPart"></div>
</div>
`
});
有关详细信息,请参阅
在AngularJS (1.x)中,我们如何创建一个可重复使用的小部件(组件),它具有用于其他小部件(组件)的插入点(插槽)?
假设我们有一个名为 "verticalsplitter" 的 component/directive。它的目的是将屏幕区域划分为 "top" 和 "bottom" 区域(可能允许用户调整大小、折叠等)。
现在假设我们有一堆其他丰富的组件,例如richtextview、treeview、videoplayer 和 gridview。
一个 page/view 1 我想要一个 verticalsplitter,顶部是 richtextview,底部是 treeview。在 page/view 2 我想要一个顶部有视频播放器、底部有网格视图的垂直拆分器。
第 1 页
<html>
<body>
<verticalsplitter>
<top ng-initialSize="30%">
<richtextview />
</top>
<bottom ng-initialSize="70%">
<treeview />
</bottom>
</verticalsplitter>
</body>
</html>
第 2 页
<html>
<body>
<verticalsplitter ng-locked="true">
<top>
<videoplayer />
</top>
<bottom>
<gridview />
</bottom>
</verticalsplitter>
</body>
</html>
我怎样才能做到这一点?如果组件无法实现(并且我需要使用指令进行嵌入),那没关系。
组件可以嵌入。在 AngularJS Developers Guide for Components:
中明确说明app.component("verticlesplitter", {
transclude: {
'topPart': 'top',
'bottomPart': 'bottom'
},
template: `
<div style="border: 1px solid black;">
<div class="top" ng-transclude="topPart"></div>
<div>Something in the middle</div>
<div class="bottom" ng-transclude="bottomPart"></div>
</div>
`
});
有关详细信息,请参阅