MUI事件管理


模塊事件管理

http://dev.dcloud.net.cn/mui/event/

事件綁定

除了可以使用addEventListener()方法監聽某個特定元素上的事件外, 也可以使用.on()方法實現批量元素的事件綁定。

.on(event,select,handler);
//event: type:string,需要監聽的事件名稱,例如:"tap";
//select:type:string,選擇器
//handler:type:function()事件觸發時的回調函數,通過回調中的event參數可以獲得事件詳情

示例:

mui(".mui-table-view").on('tap','.mui-table-view-cell',function(){
  //獲取id
  var id = this.getAttribute("id");
  //傳值給詳情頁面,通知加載新數據
  mui.fire(detail,'getDetail',{id:id});
  //打開新聞詳情
  mui.openWindow({
    id:'detail',
    url:'detail.html'
  });
}) 

事件取消

使用on()方法綁定事件后,若希望取消綁定,則可以使用off()方法。 off()方法根據傳入參數的不同,有不同的實現邏輯。

.off(event,select,handler);
.off(event,select);
.off(event);
.off();//空參數,刪除該元素上所有事件
//event: type:string,需取消綁定的事件名稱,例如:'tap';
//select:type:string,選擇器
//handler:type:function()之前綁定到該元素上的事件函數,不支持匿名函數

 

具體示例:

<script type="text/javascript">
mui("#list").on("tap","li",foo_1);//點擊li時,執行foo_1函數
mui("#list").on("tap","li",foo_2);//點擊li時,執行foo_2函數
function foo_1(){console.log("foo_1 execute");}
function foo_2(){console.log("foo_2 execute");}
// 第一種:off(event,selector,handle)適用於取消對應選擇器上特定事件所執行的特定回調,例如:
mui("#list").off("tap","li",foo_1); //點擊li時,不再執行foo_1函數,但會繼續執行foo_2函數
// 第二種:off(event,selector)適用於取消對應選擇器上特定事件的所有回調,例如:
mui("#list").off("tap","li");//點擊li時,foo_2、foo_2兩個函數均不再執行
// 第三種:off(event)適用於取消當前元素上綁定的特定事件的所有回調,例如:
mui("#list").off("tap");//點擊li時,不再執行foo_1函數;點擊p時,也不再執行foo_3函數
// 第四種:off()適用於取消當前元素上綁定的所有事件回調,例如:
mui("#list").off();//點擊li時,不再執行foo_1函數;點擊p時,也不再執行foo_3函數;雙擊li時,也不再執行foo_4函數;
</script>

事件觸發

使用mui.trigger()方法可以動態觸發特定DOM元素上的事件。

<script type="text/javascript">
.trigger(element,event,data);
//element:type: Element;觸發事件的DOM元素
//event:type: String;事件名字,例如:'tap'、'swipeleft'
//data:type: Object; 需要傳遞給事件的業務參數
</script>

示例:自動觸發按鈕的點擊事件

var btn = document.getElementById("submit");
//監聽點擊事件
btn.addEventListener("tap",function () {
  console.log("tap event trigger");
});
//觸發submit按鈕的點擊事件
mui.trigger(btn,'tap');

手勢事件

在開發移動端的應用時,會用到很多的手勢操作,比如滑動、長按等,為了方便開放者快速集成這些手勢,mui內置了常用的手勢事件,目前支持的手勢事件見如下列表:

分類 參數 描述
點擊 tap 單擊屏幕
doubletap 雙擊屏幕
長按 longtap 長按屏幕
hold 按住屏幕
release 離開屏幕
滑動 swipeleft 向左滑動
swiperight 向右滑動
swipeup 向上滑動
swipedown 向下滑動
拖動 dragstart 開始拖動
drag 拖動中
dragend 拖動結束

手勢事件配置

根據使用頻率,mui默認會監聽部分手勢事件,如點擊、滑動事件;為了開發出更高性能的moble App,mui支持用戶根據實際業務需求,通過mui.init方法中的gestureConfig參數,配置具體需要監聽的手勢事件。

mui.init({
  gestureConfig:{
   tap: true, //默認為true
   doubletap: true, //默認為false
   longtap: true, //默認為false
   swipe: true, //默認為true
   drag: true, //默認為true
   hold:false,//默認為false,不監聽
   release:false//默認為false,不監聽
  }
});

注意:dragstart、drag、dragend共用drag開關,swipeleft、swiperight、swipeup、swipedown共用swipe開關

事件監聽

單個元素上的事件監聽,直接使用addEventListener()即可,如下:

elem.addEventListener("swipeleft",function(){
     console.log("你正在向左滑動");
});

若多個元素執行相同邏輯,則建議使用事件綁定(on()) ;

自定義事件:僅能在5+ App及流應用中使用(因為是多webview之間傳值,故無法在手機瀏覽器、微信中使用);

http://dev.dcloud.net.cn/mui/event/#customevent

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM