1. 程式人生 > >mint-ui 共用彈窗,內部滾動重置問題

mint-ui 共用彈窗,內部滾動重置問題

問題描述:

          在專案中,一個訂單可能含有多個物流軌跡,檢視包裹軌跡時,共用了popup元件,發現一個問題,彈窗內部滾動的位置無法重置,檢查了css程式碼,沒有什麼特殊的,起初搞了一個臨時方案,關閉的時候高度置為0,開啟的時候重新賦值,總感覺不舒服。

<mt-popup v-model="popupVisible" v-if="popupVisible"  >
      <div class="logistics">
        <div class="title">
          <div class="con">
            <div class="logisticsSign">物流資訊</div>
            <div>運單號:{{expressNo}}</div>
          </div>
        </div>
        <div class="info">
          <div class="box" v-for="(log,index) in logs" :key="index">
            <div class="icon"></div>
            <div class="step">
              <div class="step_address">{{log.desc}}</div>
              <div class="step_time">{{log.time}}</div>
            </div>
          </div>
        </div>
        <div @click="confirm" class="confirm mainColor">
          確定
        </div>
      </div>
    </mt-popup>

仔細查詢原因後,發現 v-model="popupVisible"。彈窗是根據popupVisible的true or false顯示隱藏的,原理和v-show,一致,雖然瞭解vue指令時,簡單記憶了v-show切換成本低,v-if更高,解決該問題的簡單辦法就是使用v-if,關閉彈窗的時候元件銷燬掉。

具體原理未做深刻了解,整理知識點如下:

VUE中的v-if與v-show

1.共同點

都是動態顯示DOM元素

2.區別

(1)手段:v-if是動態的向DOM樹內新增或者刪除DOM元素;v-show是通過設定DOM元素的display樣式屬性控制顯隱;

(2)編譯過程:v-if切換有一個區域性編譯/解除安裝的過程,切換過程中合適地銷燬和重建內部的事件監聽和子元件;v-show只是簡單的基於css切換;

(3)編譯條件:v-if是惰性的,如果初始條件為假,則什麼也不做;只有在條件第一次變為真時才開始區域性編譯(編譯被快取?編譯被快取後,然後再切換的時候進行區域性解除安裝); v-show是在任何條件下(首次條件是否為真)都被編譯,然後被快取,而且DOM元素保留;

(4)效能消耗:v-if有更高的切換消耗;v-show有更高的初始渲染消耗;

(5)使用場景:v-if適合運營條件不大可能改變;v-show適合頻繁切換。

Tips:(1)如果v-show作用的元素,css檔案中display:none,通過v-show進行設定不能顯示該元素;

原因:v-show控制顯隱,是通過js程式碼去修改元素的element style,如果value為false,設定display: none;如果value為true,設定display: '';於是value為true時,只能將element style中的display效果清除,並不能覆蓋css中的display效果;

相關推薦

mint-ui 共用內部滾動問題

問題描述:           在專案中,一個訂單可能含有多個物流軌跡,檢視包裹軌跡時,共用了popup元件,發現一個問題,彈窗內部滾動的位置無法重置,檢查了css程式碼,沒有什麼特殊的,起初搞了一個臨時方案,關閉的時候高度置為0,開啟的時候重新賦值,總感覺不舒服。 &l

Springboot下載功能附件超過8K不能顯示下載頁面亂碼問題

strong oid map str 亂碼 ica req 大小 出現 Springboot項目中遇到一個文件下載問題,當文件大小超過8K時,不會出現彈出窗,而是直接在頁面顯示亂碼。 有問題的源碼如下: @RequestMapping(value = "/exportFi

頁面設點擊其他區域關閉

button ont class 2.0 pan 關閉 == htm ins 頁面設置彈窗,點擊其他區域,彈窗關閉(案列) <!DOCTYPE html> <html> <head> <meta charset="utf-

mui中同一個頁面按物理返回鍵只關閉不返回上一個頁面

若一個頁面中存在彈窗,在彈窗開啟的狀態下,點選物理返回鍵只要求關閉當前彈窗,而不是返回上一頁面,再次點選物理鍵時才會返回上一頁面,有以下解決方法。 step1:進入頁面時先禁用物理返回鍵,此時還能監聽到返回鍵,只是不執行返回 mui.init({ beforeback:func

解決微信小程式自定義滑動自定義底部的頁面也一起跟著滑動的問題

解決方案,我總結了以下幾種 1、控制底部根目錄scroll-view 的scroll-y屬性的true/false,控制底部滾動以及不滾動 2、在自定義彈框最外層元素加上catchtouchmove=’true’ ;或者catchtouchmove="preventTouchMove"

JS-設定時候禁用滾動

方法一 啟用禁用時,設定js document.documentElement.style.overflowY = 'hidden'; 當還原時候,只需要把屬性重置scroll就可以了 document.documentElement.style.overflowY = 'sc

跳出頁面禁止滾動(PC端和手機端)

pc端如何實現 1.當彈窗顯示時,為body元素新增屬性:overflow:hidden, 當關閉彈窗時移除該屬性即可2.在彈窗的div上設定 @scroll.stop.prevent &lt;div @scroll.stop.prevent&gt; 你要顯示的內容 &lt;/d

mint-ui toast提示

用mint-ui做了一個簡單的專案,下面簡單的總結一下toast三種提示窗: 1.messagebox彈窗 this.$messagebox({ title: "溫馨提示", message: "請選擇續費銀行",

mint-ui 上拉重新整理下拉載入

export default { data() { return { list: [], allLoaded: true, bottomStatus: "", wrapperHeight: 0, topStatus: "",

bootstrapTable 實現指定欄位行內編輯自動儲存

    最近做一個專案時,使用bootstrapTable 作為表格進行資料展示,客戶要求對數量欄位更直觀的行內編輯,研究了一下網上的方案並參考了下面的文章 bootstrapTable行內動態編輯行中某列欄位資料(優化版:無需彈框,直接在行內更新) ,對文中的程式碼進行改

java selenium 無下載檔案格式是mht

1.如果是單個網頁,可以用下面的程式碼操作,下載網頁,無彈窗。 package com.hlhlo.recruitment.download.service.impl; import org.openqa.selenium.WebDriver; import org.ope

使用vue-mint-ui 上拉載入下拉重新整理效果

剛開始進入公司,搞得是vue開發的微信公眾號,花了好幾天做了一個這個效果,自己都笑哭了。做了這麼長時間。 <!-- <div class="dataSet" v-for="(item,index) in bulletinList" :

小程式禁止頁面滾動

彈出 fixed 彈窗後,在彈窗上滑動會導致下層的頁面一起跟著滾動。 解決方法: 在彈出層加上 catchtouchmove 事件   示例程式碼: <view class="modal-view" hidden="{{!showModal}}" bindtap="toggleMod

禁止底部背景滾動方式(二)

 this.$refs.skuPanelPageRef.addEventListener("touchstart",function(e){           e.stopPropagation();     &nbs

artDialog5點選遮罩層關閉

artDialog是一個基於javascript編寫的對話方塊彈窗元件,它有較豐富的介面,完全可以滿足你專案中各類需求的實現。 artDialog4+ 官網地址:http://code.google.com/p/artdialog/ 有原生js版本,也有提供

js,jq點選開啟小當前頁面出小視窗

function openWin(url) { var u = url; window.open(u, 'newwindow', 'height=600, width=800, top=30%,

使用jbox關閉子窗體並重新整理父窗體

$.jBox.open("iframe:Staff.aspx"  "子窗體A", 650, 400, { buttons: {}, top: '10%' }); 開始使用parent.location.reload(),  IE總是彈出“若再次顯示該網頁web瀏覽器需要重

JavaScript封裝自己的一個是雙按鈕的比較簡單一些 其中引用了jQuery來寫的方法最後暴露出去有更好的建議歡迎評論 。。。。

$(function(){ // 設定自執行函式 (function(jQuery){ // 定義建構函式 var Popup = function (title,text,fn) { this.title = title || '

Android 仿微信popuwindow呼叫只需要一個方法以及4.4系統popuwindow外部不響應解決辦法

對於popuwindow大家都熟悉,他給Dialog的區別就是外部可以點選消失,一些使用者提示、使用者指引基本上用的都是這個控制元件,我用這個控制元件實現了微信分享的下部彈窗,效果挺好,使用起來也比較流暢,佈局樣式,都可以根據自己的需求進行更改,很不錯的一個方法,希望能幫到大

mint ui 上拉重新整理下拉載入問題

1.最外層包一層div,一定要有高度。2.mt-loadmore ,該外掛會預設自動載入一次,在頁面首次載入的時候。3.在載入成功後,並且是最後一頁時,要把allLoaded 設定為false;如果不是最後一頁,要設為true。大致程式碼如下:<div class="m