QPopupEdit 元件可以用於「就地」編輯值,例如 QTable 中的儲存格。預設情況下,儲存格顯示為字串,然後如果您使用 QPopupEdit,並且使用者點擊/點選表格儲存格,則會開啟一個彈出視窗,使用者可以在其中使用文字輸入框編輯值。
此元件將 QMenu 注入其父 DOM 元素中,並啟用上述行為,因此它可以應用於任何地方,而不僅僅是在 QTable 中。
用法
警告
如果在 QTable 上使用,QPopupEdit 將無法與儲存格作用域插槽一起使用。
獨立使用
與 QTable 搭配使用
點擊儲存格以查看彈出式編輯器。「Name」欄位示範了 title
屬性。「Calories」欄位顯示了數值用法。「Fat」欄位也示範了 disable
屬性。如果您查看原始碼,您會看到「fat」的儲存格正在使用 QPopupEdit,但是當點擊儲存格時,彈出視窗不會顯示。
自訂
持久化且帶有按鈕
您也可以使用 buttons
屬性新增兩個按鈕:「取消」和「設定」(預設標籤)。這些按鈕有助於控制使用者的輸入。除了 buttons
屬性之外,您還可以使用 persistent
屬性,該屬性會拒絕使用者使用 Esc 鍵或點擊/點選彈出視窗外部來關閉彈出視窗。最後,您可以使用 label-set
和 label-cancel
屬性來控制兩個按鈕的標籤,如「Protein」欄位所示。請注意,「Save」取代了「Set」,「Close」取代了「Cancel」。
persistent
屬性在「carbs」欄位中示範。
預設插槽
預設插槽的參數為
{ initialValue, value, validate, set, cancel, updatePosition }
警告
請勿解構插槽的參數,因為當直接將 value
屬性與 v-model
一起使用時,會產生程式碼檢查錯誤。
Textarea / QEditor
由於 QPopupEdit 包裝了 QInput,因此您基本上可以使用任何類型的 QInput。例如,您也可以使用文字區域,如下面的「Comments」欄位所示。
提示
當使用多行控制項(textarea、QEditor)進行輸入時,您還需要在元件上使用 @keyup.enter.stop
,以阻止 Enter 鍵關閉彈出視窗。您還需要新增按鈕來控制彈出視窗。
驗證
QPopupEdit 也允許對輸入進行簡單驗證。要使用它,您需要以箭頭函數的形式給它一個回呼函數,它應該傳回一個布林值。(value) => Boolean
。這在下面的「Calories」欄位中示範。
提示 1
請注意,我們也正在使用 hide
事件來重新驗證輸入。如果我們不這樣做,QInput 的 error 屬性將會「掛起」在無效狀態。
提示 2
在此範例中,我們正在使用 QInput 的外部錯誤處理。我們也可以使用 QInput 的 validation 屬性並將值發送到 QPopupEdit 的 validation 屬性。當也使用 Vuelidate 時,可以實作相同的概念。換句話說,給予 QPopupEdit 驗證函數的值可以來自任何地方。