我使用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