transfer 參數 - daniel-qa/Vue GitHub Wiki

正確來說應該是:

transfer="true"

日曆面板渲染到 body 的最底層

脫離原本的文件流,掛在 body 下

:transfer="false"

日曆面板渲染在組件本身的 DOM 節點內 保留在原本的文件流中,是組件的子元素

所以全螢幕的問題是:

全螢幕元素(#index)
  └── DatePicker
        └── 日曆面板  ← transfer=true 時會被搬到這裡
                            ↓
body
  └── 日曆面板  ← 在全螢幕元素之外,被蓋住了

改成 :transfer="false" 後:

全螢幕元素(#index)
  └── DatePicker
        └── 日曆面板  ← 留在全螢幕元素內,正常顯示

日曆面板留在全螢幕容器內的文件流中,所以才能正常顯示和操作。


transfer 的意思是「傳送、轉移」

在 iView/ViewUI 的組件中,transfer 控制的是下拉層(日曆面板)要渲染到哪裡:

transfer="true"(預設)

把日曆面板轉移到 body 的最底部渲染

好處是不會被父容器的 overflow: hidden 或 z-index 影響

適合一般頁面使用

:transfer="false"

日曆面板就渲染在組件本身的位置,不轉移

適合全螢幕模式,因為不會被全螢幕層蓋住

你可以想像成:

transfer="true" → 把日曆「搬家」到 body 下
:transfer="false" → 日曆就待在原地不動

全螢幕模式下,日曆搬到 body 後反而被全螢幕元素蓋住,所以要讓它「待在原地」才能正常顯示。