自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Clouda第一App“留言大廳”之創(chuàng)建hall.js

移動開發(fā) Android
Clouda是簡單,可依賴的實時Javascript框架。對一個想開發(fā)移動webapp的開發(fā)者來說,可以使用clouda開發(fā)框架,實現(xiàn)一個功能和體驗與native app齊平的輕應(yīng)用。

app/controller/下創(chuàng)建hall.js

  • hall.js

    1. sumeru.router.add( 
    2.     { 
    3.         pattern: '/hall'
    4.         action : 'App.hall' 
    5.     } 
    6. ); 

    我們在上一篇文檔中已經(jīng)看到過router,sumeru.router.add()作用是添加一個URL(其路徑部分)與Controller的映射關(guān)系,關(guān)于router在下一篇文檔中會做專門說明。

    1. App.hall = sumeru.controller.create(function(env, session){ 
    2.     var getMsgs = function(){        
    3.         session.messages = env.subscribe('pub-message'function(msgCollection){ 
    4.             //manipulate synced collection and bind it to serveral view blocks. 
    5.             session.bind('message-hall', { 
    6.                 data    :   msgCollection.find() 
    7.             }); 
    8.         }); 
    9.     };       
    10.     //onload is respond for handle all data subscription 
    11.     env.onload = function(){             
    12.         return [getMsgs];             
    13.     }; 

    大家可以看到在這里多了一個env.onload(),這是Controller的第一個時態(tài),Controller中需要使用的數(shù)據(jù)都在這個時態(tài)中加載,我們先在這里添加上面的代碼,關(guān)于env.onload()方法會在下一篇文檔中做專門介紹。

    1. //sceneRender is respond for handle view render and transition 
    2.    env.onrender = function(doRender){ 
    3.        doRender('hall', ['push''left']); 
    4.    }; 

    在上一篇文檔中我們已經(jīng)見過env.onrender(),這是Controller的第二個時態(tài),負責(zé)對View的渲染,關(guān)于該時態(tài)在后續(xù)會做專門說明。

    1. //onready is respond for event binding and data manipulate 
    2.   env.onready = function(){            
    3.       Library.touch.on('.messageSubmit''touchstart', submitMessage); 
    4.       Library.touch.on('.clearHistory''touchstart', clearHistory); 
    5.   }; 

    我們看到這里多了一個env.onready(),這是Controller的第三個時態(tài),在View渲染完成后,事件綁定、DOM操作等業(yè)務(wù)邏輯都在該時態(tài)中完成。

    為了方便開發(fā)者更快的開發(fā)移動端的應(yīng)用,Clouda中內(nèi)置了手勢事件庫,關(guān)于手勢事件庫在API手冊Touch部分會做詳細的說明,在這里使用了手指輕觸事件touch,如果您是在PC瀏覽器中運行應(yīng)用需要開啟瀏覽器的Emulate touch events功能。

    在上面的代碼中可以看到,我們使用了submitMessage()和clearHistory()兩個還沒有定義的方法,下面我們來實現(xiàn)它們。

    1. var submitMessage = function(){ 
    2.       var input = document.getElementById('messageInput'), 
    3.           inputVal = input.value.trim();       
    4.       if (inputVal == '') { 
    5.          return false;  
    6.       }; 
    7.       session.messages.add({ 
    8.          content : inputVal 
    9.       }); 
    10.       session.messages.save(); 
    11.       input.value = '';           
    12.   }; 

    在submitMessage()中我們使用了session.message.add()session.message.save(),.add()用于在collection中新增一個Model。.save()是用于將collection的修改保存到Server,在通常情況下,調(diào)用.save()方法會自動觸發(fā)對應(yīng)視圖block的更新。

    從這里可以看出,Clouda設(shè)計的核心是面向數(shù)據(jù)的,當(dāng)數(shù)據(jù)發(fā)生改變時Clouda會自動更新與該數(shù)據(jù)有關(guān)聯(lián)的視圖block,我們稱之為"隨動反饋",這是Clouda的一個重要特性。

    1.     var clearHistory = function(){ 
    2.         session.messages.destroy(); 
    3.         session.messages.save(); 
    4.     }        
    5. }); 

    同.add()的使用方法類似,.destroy()作用是將collection中的數(shù)據(jù)全部清空,數(shù)據(jù)清空后同樣我們調(diào)用.save()根據(jù)數(shù)據(jù)的變化重新渲染與該數(shù)據(jù)關(guān)聯(lián)視圖block。

責(zé)任編輯:張葉青
相關(guān)推薦

2013-10-31 15:44:13

CloudaApp

2013-10-31 15:16:13

CloudaApp

2013-10-31 15:29:47

CloudaApp

2013-10-31 15:27:25

CloudaApp

2013-10-31 15:40:44

CloudaApp

2013-10-31 15:47:29

CloudaApp

2013-10-31 11:04:03

Cloudapackage.js

2013-10-31 15:12:57

CloudaAPI

2013-10-30 22:10:28

Clouda程序

2013-10-31 14:55:22

2013-10-31 10:57:10

CloudaManifest

2013-10-30 22:41:23

Clouda環(huán)境

2013-10-31 13:47:23

CloudaAPI

2013-10-31 14:30:44

CloudaAPI

2013-10-31 09:51:10

CLouda結(jié)構(gòu)

2013-12-09 17:27:19

CloudaNode.js

2013-10-31 13:37:07

CloudaAPI手冊

2013-10-30 22:50:30

Clouda結(jié)構(gòu)

2013-10-31 10:59:41

Clouda使用

2013-12-02 13:06:19

Clouda框架
點贊
收藏

51CTO技術(shù)棧公眾號