1. 程式人生 > >Omi教程-生命週期和事件處理

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

# 生命週期
名稱 含義 時機
constructor 建構函式 new的時候
install 初始化安裝,這可以拿到使用者傳進的data進行處理 例項化
installed 安裝完成,HTML已經插入頁面之後執行 例項化
uninstall 解除安裝元件。執行remove方法會觸發該事件 銷燬時
beforeUpdate 更新前 存在期
afterUpdate 更新後 存在期
## 示意圖 ![lc](http://images2015.cnblogs.com/blog/105416/201701/105416-20170119153018546-1566368987.png) ## 舉個例子 ```js 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 `Seconds Elapsed: {{secondsElapsed}}
`; } } ``` 點選這裡→線上試試 # 事件處理 Omi的事件分內建事件和自定義事件。在內建事件處理方面巧妙地利用了瀏覽器自身的管線機制,可以通過event和this輕鬆拿到事件例項和觸發該事件的元素。 ## 內建事件 什麼算內建事件?只要下面正則能匹配到就算內建事件。 ```js 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) ``` 內建事件怎麼繫結?如下所示: ```js class EventTest extends Omi.Component { constructor(data) { super(data); } handleClick(dom, evt){ alert(dom.innerHTML); } render () { return `Hello, Omi!`; } } ``` ## 自定義事件 開發者自己定義的元件的事件,稱為自定義事件,自定義事件必須以on開頭,即onXXXX的格式,不然Omi識別不到。這裡拿分頁作為例子: ```js 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 `

Pagination Example

`; } } Omi.render( new Main(),'body'); ``` 如上面的onPageChange就是自定義事件,觸發會執行handlePageChange。onPageChange方法是在Pagination中執行: ```js 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的地方。 ## 相關地址 * [演示地址](http://alloyteam.github.io/omi/example/pagination/) * [原始碼地址](https://github.com/AlloyTeam/omi/tree/master/example/pagination) # 招募計劃 * Omi的Github地址[https://github.com/AlloyTeam/omi](https://github.com/AlloyTeam/omi) * 如果想體驗一下Omi框架,請[點選Omi Playground](http://alloyteam.github.io/omi/example/playground/) * 如果想使用Omi框架,請閱讀 [Omi使用文件](https://github.com/AlloyTeam/omi/tree/master/docs#omi使用文件) * 如果想一起開發完善Omi框架,有更好的解決方案或者思路,請閱讀 [從零一步步打造web元件化框架Omi](https://github.com/AlloyTeam/omi/tree/master/docs#從零一步步打造web元件化框架omi) * 關於上面的兩類文件,如果你想獲得更佳的閱讀體驗,可以訪問[Docs Website](http://alloyteam.github.io/omi/website/docs.html) * 如果你懶得搭建專案腳手架,可以試試[Scaffolding for Omi](https://github.com/AlloyTeam/omi/tree/master/scaffolding) * 如果你有Omi相關的問題可以[New issue](https://github.com/AlloyTeam/omi/issues/new) * 如果想更加方便的交流關於Omi的一切可以加入QQ的Omi交流群(256426170) ![](http://images2015.cnblogs.com/blog/105416/201702/105416-20170208095745213-1049686133.png)

相關推薦

Omi教程-生命週期事件處理

# 生命週期 名稱 含義 時機 constructor 建構函式 new的時候 install 初始化安裝,這可以拿到使用者傳進的data進行處理 例項化 installed 安裝完成,HTML已經插入頁面之後執行 例項化 u

Servlet生命週期處理Http請求與響應

servlet的生命週期:    1.容器開啟並載入servlet;    2.呼叫init()方法對servlet進行初始化;    3.當請求到來呼叫service()方法處理請求,傳送響應;    4.呼叫destory()方法銷燬servlet; servlet處理Http響應        

javascript學習筆記(五):異常捕獲事件處理

log 類型 按鈕 輸入 button lan yellow logs 代碼 異常捕獲 Try{   發生異常的代碼塊 }catch(err){   異常信息處理 } 1 <!DOCTYPE html> 2 <html> 3 <head

java Swing組件事件處理

add 滾動條 容器 wing 作用 一行 tla erp 事件 1、常見的容器 JComponent是 Container 的子類,中間容器必須添加到底層容器中才能夠發揮作用, JPanel 面板 :使用jPanel 創建一個面板,

java Swing組件事件處理(二)

per box end 是否 amp todo email 創建 init 1、BoxLayout類可以創建一個布局對象,成為盒式布局,BoxLayout在javax.Swing border 包中,java.swing 包提供一個Box類,該類也是一個類,創建的容器稱作

事件事件處理程序

阻止 targe 外部 true -c t對象 mes tac 引用 事件:用戶或瀏覽器自身執行的某種動作。諸如:click、load、mouseover等。 事件處理程序(事件偵聽器):響應某個時間的函數。以“on”開頭。 html方法: 某個元素支持的每種事件

2.Spring的Bean生命週期組裝方式

1.Spring IoC容器概述    Spring IoC容器:      Spring容器即體現了IoC原理    Spring容器通過讀取配置元資料負責對Beans例項化、配置和裝配     配置元資

spring bean的生命週期作用域(不看後悔,一看必懂)

bean的生命週期 生命週期執行的過程如下: 1)spring在讀取xml配置檔案時對bean進行例項化,預設bean是單例 2)spring對bean進行依賴注入 3)如果bean實現了BeanNameAware介面,spring將bean的id傳給setBeanName

Maven:生命週期外掛。

Maven的生命週期與外掛相互繫結,用以完成實際的構建任務。具體而言,是生命週期的階段與外掛的目標相互繫結,以完成某個具體的構建任務。例如專案編譯這一任務,他對應了default生命週期的compile這一階段,而maven-compiler-plugin這一外掛的compile目標能夠完成該任務。

maven系列-(四)maven生命週期外掛

前面講了maven的依賴和倉庫,這是經常接觸到的一些操作。但是我們平時還會接觸到maven生命週期的一些操作,比如打包、編譯等,maven就可以把我們的專案進行打包、編譯。其實這個過程,還是涉及到很多知識點的,只不過我們在操作過程中察覺不到而已。 我們在專案開發中都會涉及到清理、編譯、測

JAVA執行緒的生命週期分析工具

執行緒的生命週期的六種狀態  其中一種 有效的方法就是看原始碼 1、NEW 在 虛擬機器的 中建立物件,初始化 成員變數。 2、RUNNABLE 在虛擬中建立執行緒 私有的程式計數器,虛擬機器棧, 等待虛擬機器 執行緒排程器,分配時間片。 3、BLOCKED

安卓重要生命週期流程圖

轉載自https://blog.csdn.net/RoseChan/article/details/51486513 1-Activity生命週期 2-Fragment生命週期 3-Service生命週期 4-View的繪製流程圖 5-Looper-Mes

[轉載] Linux export變數的生命週期shell的生命週期相同,即shell指令碼執行完畢後,相應的export變數便失效了

說說shell指令碼中的export 和 source,bash 小弟剛剛接觸linux,對linux上的很多東西都比較陌生,所以寫一寫部落格,當做自己工作的總結和技術的積累吧,也是鞭策自己不斷努力的去學習。 今天之所以起這個標題,把export,source ,bash這三個命令放在一起講

【WEB 三大核心 Servlet Filter Listener 的生命週期 執行流程 】

1. Servlet 的 生命週期 和 執行流程 1.1 Servlet 的執行流程 1. 客戶端傳送請求 (以 GET 或者 Post 方式傳送請求 ) 超連結 : <a href="servl

maven生命週期外掛詳解

    生命週期和外掛是Maven的兩個核心概念,命令列的輸入往往就對應了生命週期,如mvn package就表示執行預設生命週期階段package。Maven的生命週期是抽象的,其實際行為都由外掛來完成。Maven的生命週期是為了對所有的構建過程進行抽象和統一。   &nbs

vue js 的生命週期鉤子函式

 用Vue框架,熟悉它的生命週期可以讓開發更好的進行。 首先先看看官網的圖,詳細的給出了vue的生命週期:    簡單理解為 它可以總共分為8個階段: beforeCreate(建立前), created(建立後), beforeMount

servlet生命週期執行流程

一 、生命週期 servlet 宣告週期可以分四個階段: 類裝載過程 init() 初始化過程 service() 服務過程,選擇doGet \ doPost destroy() 銷燬過程 servlet介面如下 public interface Servlet {

Maven的生命週期外掛

(尊重勞動成果,轉載請註明出處:https://blog.csdn.net/qq_25827845/article/details/83795622冷血之心的部落格) 快速導航: Maven基礎概念和安裝配置教程 Maven的倉庫和settings.xml配置檔案 Maven的座

maven學習之路(四)生命週期外掛

1、什麼是生命週期?外掛的作用? 前面我們說過,maven是一個專案構建、依賴管理的工具,生命週期就是maven在專案構建的過程中抽象出來的一系列子過程,例如編譯、執行測試、打包等等過程。 需要注意的是,maven只是將生命週期進行了抽象化的定義,真正實現生

vue生命週期react生命週期對比

一 vue的生命週期如下圖所示(很清晰)初始化、編譯、更新、銷燬   二 vue生命週期的栗子  注意觸發vue的created事件以後,this便指向vue例項,這點很重要 <!DOCTYPE html> <html> <head> <