我使用Angular 1.5创建了可重用的项目选择器组件。选取器有一个搜索栏和一个可供选择的项目列表。选择器的一个示例用例是一个弹出窗口,用户选择一些项目,然后有一个“继续”按钮继续。将多个“按钮”参数传递给Angular组件
概念上,搜索字段和项目列表属于组件,“继续”按钮属于周围的对话框。但是,我想将按钮放在搜索栏旁边。在某些情况下,没有额外的按钮,有时一个额外的按钮,有时两个。
事情是这样的:
什么是创建这样一个组件的最佳方式?
选项,我认为:
创建项目选取器组件/指令,之前或HTML指令后放按钮,并使用CSS来定位按钮。
这里按钮的位置是丑陋和脆弱的,因为它不在HTML中的适当位置。或许,这将需要一个包装DIV和绝对定位在选择器组件的顶部:
<div style="position: relative"> <item-picker></item-picker> <button name="Continue" ng-click="submit()" style="position:absolute; top:5px; right: 5px"></button> </div>
某种方式传递的按钮和回调作为参数传递给项目选取器组件。在这里,丑是按钮的按键和款式和数量的硬编码:
<item-picker btn1-text="Continue" btn1-style="primary" btn1-callback="submit()" btn2-text="Cancel" btn2-style="secondary" btn2-callback="cancel()"></item-picker>
我不确定是否按键的配置和回调可以作为一个单独的配置对象进行传递。我主要关心回调函数,如果它们通过配置对象而不是正确的
'&'
回调绑定传递,它们是否会正常工作。不要试图让选取器进入组件/指令,只是使用
<ng-include>
来包含从示波器读取按钮配置的选取器代码。丑陋是缺乏范围和不使用组件。
这种情况是否有一些最佳实践?
可能有第四个选项是使用[ng-transclude](https://docs.angularjs.org/api/ng/directive/ngTransclude) – o4ohel
@ o4ohel看起来就像我想要的。谨慎写一个答案? (我也可以写一个) – Sampo