基於dojo實現mvc 模式下的ajax應用

iDotNetSpace發表於2008-08-26
好象誰也沒料到我在專案中做起了client端ajax應用,不過還好我也感興趣,幸好一直以來應用.net的同時也做過嘗試,其原理還是很好理解的,至於ms的atlas我就沒太多接觸了,反正感覺基於client js庫自己來ajax要自由、靈活多了,至於client的有助於ajax應用的pure js庫也蠻多的,此次專案組選用dojo庫(大概由於其強大又開源吧).

   本人要實現的其中一項應用是控制服務端返回來的音訊、文字在客戶端播放時的同步,相信都看到過baidu的歌曲試聽吧,聲文同步且支援拖放同步,此次實現多它一個功能,那就是點哪一句就播哪一句(當然我不是為了播放歌曲).簡要說我在和伺服器的互動中使用JSON(javascript. object notation)傳輸資料,服務端用Newtonsoft的.net元件處理json資料序列化,至於具體的json格式那就你自己定義了,例如(最簡單的): {
      Media : [{
      text : "......",
      start : "...",
            end : "...."
         },  ....]
         }
至於js下的mvc實現,或許許多人這樣認為“js僅僅是個指令碼而已”,大概應是ajax的出現改觀了許多人對js的看法,其實用js可以寫出完全物件導向的程式,因為js支援面嚮物件語言的幾大重要特性,應是一直以來大家所見到的js指令碼給大家造成了不好的印象,js原本就是物件導向的語言(我們見到許多由它寫成的結構化的程式).看一下這篇文章我的實現也是受它啟發,延伸一點的就是引用dojo的事件訂閱、釋出機制.

   說一下上述陳述功能的具體的實現,在model方面實現首先實現一個容器型的model,解析json資料並擁有當前句資訊、所有句資訊(陣列)、設定當前句方法,
基於dojo實現mvc 模式下的ajax應用ContainerModel

 

基於dojo實現mvc 模式下的ajax應用ItemModel

另一個model代表上述的一句的資訊,包含text、startTime、endTime,並且訂閱“/positionChange”事件(後面據mediaplayer定時釋出),同時定義兩方法(此處會於View中用dojo.event的connect將其連於特定的使用者事件)用於釋出當前物件被啟用的事件,於view中同時會為controller訂閱此物件啟用所釋出的事件,controller處理時會重新整理container model的當前項同時更新view的表現(如新增樣式),其中view物件除了為其他物件進行一些事件連線、訂閱外,其render方法負責將container model的所有項render成特定的html元素(如span),其中決定model的顯示形式,

基於dojo實現mvc 模式下的ajax應用Viewer - Controller

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-434691/,如需轉載,請註明出處,否則將追究法律責任。

相關文章