xl_echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!!
在使用iview的時候,對於界面效果確實是比較滿意,提供的組件也很多的很全,和element相比,iview更注重視覺和渲染。但是也有一些缺點,比如組件的bug,生態圈的收費問題。這里只講解page的跳轉bug
iview中page最初的跳轉功能樣子如下
可以看到並沒有跳轉的按鈕,如果要跳轉的話,必須輸入頁數之后按'enter'鍵,如果不按沒法跳轉。對於用戶來說,電腦的操作水平不一,很多人可能沒有enter的意識,這樣就造成了這個功能的雞肋,所以需要修復
修復最終的界面跳過如下
跳轉按鈕是我們手動加上去的一個按鈕
<Page
:id="pageId"
:total="total"
:current="page"
@on-change="changePage"
@on-page-size-change="changesPages"
show-sizer
show-elevator
>
</Page>
<div style="float: left;margin-right: 10px;margin-top: 12px">
<Button type="primary" size="small" @click="goElevatorPage(pageId)">跳轉</Button>
</div>
加上按鈕之后我們並沒有實現功能,只是看起來比較像而已。
模擬點擊跳轉
編寫點擊跳轉方法之前要現在page組件中添加:id="pageId"
,並在return當中定義對應pageId的值。我這里定義如下:
return {
pageId: "targetpage",
}
完成之后,編寫跳轉方法,如下:
goElevatorPage:function(pageId){
var evtObj;
var thisPage=document.getElementById(pageId);
var elevatorDiv=thisPage.getElementsByClassName("ivu-page-options-elevator");
if(elevatorDiv && elevatorDiv.length>0){
var pageInput = elevatorDiv[0].getElementsByTagName("input")[0];
if (window.KeyEvent) {//firefox 瀏覽器下模擬事件
evtObj = document.createEvent('KeyEvents');
evtObj.initKeyEvent("keyup", true, true, window, true, false, false, false, 13, 0);
} else {//chrome 瀏覽器下模擬事件
evtObj = document.createEvent('UIEvents');
evtObj.initUIEvent("keyup", true, true, window, 1);
delete evtObj.keyCode;
if (typeof evtObj.keyCode === "undefined") {//為了模擬keycode
Object.defineProperty(evtObj, "keyCode", { value: 13 });
} else {
evtObj.key = String.fromCharCode(13);
}
}
pageInput.dispatchEvent(evtObj);
}
}
多page組件同一頁面
如果在這個頁面中間有很多個page組件,那么這里只能實現一個page組件的跳轉,如果需要多個page組件都有這個功能,模擬跳轉方法,只需要一個即可,關鍵是要在page組件中添加:id="pageId"
一個page對應一個不同的id值,在對應調用方法的地方傳入對應id值接口。
目前沒有解決的疑問
比如我點擊跳轉按鈕之后,跳轉到了響應頁面。到了相應頁面之后,不改變當前需要跳轉的頁面值的時候,再次點擊跳轉按鈕,是沒有反應的。