<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      Omi教程-生命周期和事件處理

      2017-02-22 10:47  【當耐特】  閱讀(1130)  評論(0)    收藏  舉報

      生命周期

      名稱 含義 時機
      constructor 構造函數 new的時候
      install 初始化安裝,這可以拿到用戶傳進的data進行處理 實例化
      installed 安裝完成,HTML已經插入頁面之后執行 實例化
      uninstall 卸載組件。執行remove方法會觸發該事件 銷毀時
      beforeUpdate 更新前 存在期
      afterUpdate 更新后 存在期

      示意圖

      lc

      舉個例子

      class Timer extends Omi.Component {
          constructor(data) {
              super(data);
          }
      
          install () {
              this.data = {secondsElapsed: 0};
          }
      
          tick() {
              this.data.secondsElapsed++;
              this.update();
          }
      
          installed(){
              this.interval = setInterval(() => this.tick(), 1000);
          }
      
          uninstall() {
              clearInterval(this.interval);
          }
      
      
          style () {
              return `
              .num { color:red; }
              `;
          }
      
          render () {
              return `<div>Seconds Elapsed:<span class="num"> {{secondsElapsed}}</span></div>`;
          }
      }
      

      點擊這里→在線試試

      事件處理

      Omi的事件分內置事件和自定義事件。在內置事件處理方面巧妙地利用了瀏覽器自身的管線機制,可以通過event和this輕松拿到事件實例和觸發該事件的元素。

      內置事件

      什么算內置事件?只要下面正則能匹配到就算內置事件。

      on(abort|blur|cancel|canplay|canplaythrough|change|click|close|contextmenu|cuechange|dblclick|drag|dragend|dragenter|dragleave|dragover|dragstart|drop|durationchange|emptied|ended|error|focus|input|invalid|keydown|keypress|keyup|load|loadeddata|loadedmetadata|loadstart|mousedown|mouseenter|mouseleave|mousemove|mouseout|mouseover|mouseup|mousewheel|pause|play|playing|progress|ratechange|reset|resize|scroll|seeked|seeking|select|show|stalled|submit|suspend|timeupdate|toggle|volumechange|waiting|autocomplete|autocompleteerror|beforecopy|beforecut|beforepaste|copy|cut|paste|search|selectstart|wheel|webkitfullscreenchange|webkitfullscreenerror|touchstart|touchmove|touchend|touchcancel|pointerdown|pointerup|pointercancel|pointermove|pointerover|pointerout|pointerenter|pointerleave)
      

      內置事件怎么綁定?如下所示:

      class EventTest extends Omi.Component {
          constructor(data) {
              super(data);
          }
      
          handleClick(dom, evt){
              alert(dom.innerHTML);
          }
      
          render () {
              return `<div onclick="handleClick(this, event)">Hello, Omi!</div>`;
          }
      }
      

      自定義事件

      開發者自己定義的組件的事件,稱為自定義事件,自定義事件必須以on開頭,即onXXXX的格式,不然Omi識別不到。這里拿分頁作為例子:

      import Omi from '../../src/index.js';
      import Pagination from './pagination.js';
      import Content from './content.js';
      
      Omi.makeHTML('Pagination', Pagination);
      Omi.makeHTML('Content', Content);
      
      class Main extends Omi.Component {
          constructor(data) {
              super(data);
          }
      
          installed(){
              this.content.goto(this.pagination.data.currentPage+1);
          }
          handlePageChange(index){
              this.content.goto(index+1);
          }
      
          render () {
              return `<div>
                          <h1>Pagination Example</h1>
                          <Content name="content" />
                          <Pagination
                              name="pagination"
                              data-total="100"
                              data-page-size="10"
                              data-num-edge="1"
                              data-num-display="4"     
                              onPageChange="handlePageChange" />
                      </div>`;
          }
      }
      
      Omi.render( new Main(),'body');
      

      如上面的onPageChange就是自定義事件,觸發會執行handlePageChange。onPageChange方法是在Pagination中執行:

      import Omi from '../../src/index.js';
      
      class Pagination extends Omi.Component {
          ...
          ...
          ...
                  linkTo: "#",
                  prevText: "Prev",
                  nextText: "Next",
                  ellipseText: "...",
                  prevShow: true,
                  nextShow: true,
                  onPageChange: function () { return false; }
              }, this.data);
      
              this.pageNum = Math.ceil(this.data.total / this.data.pageSize);
          }
          goto (index,evt) {
              evt.preventDefault();
              this.data.currentPage=index;
              this.update();
              this.data.onPageChange(index);
          }
          ...
          ...
          ...
      }
      

      這里取了Pagination組件的部分代碼。高亮的就是執行onPageChange的地方。

      相關地址

      招募計劃

      主站蜘蛛池模板: 成人做受视频试看60秒| 国产无套白浆一区二区| 欧美交a欧美精品喷水| 成人免费A级毛片无码片2022| 亚洲AV高清一区二区三区尤物| 天天躁日日躁狠狠躁中文字幕| 国产熟睡乱子伦视频在线播放| 久久综合色之久久综合| 欧美偷窥清纯综合图区| av在线播放国产一区| 中国少妇人妻xxxxx| 伊人成伊人成综合网222| 欧美丰满熟妇乱XXXXX网站| 人人人澡人人肉久久精品| 亚洲国产成人无码av在线播放 | av无码久久久久不卡网站蜜桃| 99精品国产精品一区二区| 内射干少妇亚洲69XXX| 国产人妻精品午夜福利免费| 国产AV无码专区亚洲AV漫画| 99精品人妻少妇一区| 国产精品污www在线观看| 91亚洲国产成人久久蜜臀| 久久99国产精品久久99小说| 99久久亚洲综合精品成人网| 成人免费A级毛片无码片2022| 99精品热在线在线观看视| 国产高清色高清在线观看| 欧洲精品码一区二区三区| 东京热av无码电影一区二区| 国内精品伊人久久久久av| 亚洲 欧美 综合 另类 中字| 久久道精品一区二区三区| 国产不卡精品视频男人的天堂| 无码熟妇人妻AV影音先锋| 日韩一区二区黄色一级片| 日韩有码中文字幕国产| 国产无遮挡性视频免费看| 久青草国产在视频在线观看| 天天爽夜夜爱| yw尤物av无码国产在线观看|