国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Backbone.js學(xué)習(xí)筆記:圖書(shū)案例-事件綁定

caige / 1080人閱讀

摘要:數(shù)據(jù)更新的時(shí)候,支持多事件和自定義事件。然后使用兩個(gè)事件和的自定義事件。我們將使用別名函數(shù)。是為了模擬從服務(wù)器獲取響應(yīng)的時(shí)間。在它內(nèi)部里面,使用和返回模型屬性把選中的模型賦值給當(dāng)前視圖的模型。

  

前言: 我們繼續(xù)使用上一次寫(xiě)的圖書(shū)案例,在基礎(chǔ)上面進(jìn)行改進(jìn)!

事件綁定

在我們?yōu)g覽網(wǎng)頁(yè)的時(shí)候,獲取數(shù)據(jù)并不是一下只就全部獲取到的,為了創(chuàng)建一個(gè)更好的用戶(hù)體驗(yàn),就來(lái)模擬一個(gè)加載(Spinner)的圖片來(lái)告訴用戶(hù)正在獲取數(shù)據(jù)中!

當(dāng)用戶(hù)在瀏覽詳細(xì)視圖(books/:BookName),只需要調(diào)用加載數(shù)據(jù)的方法。然后,因?yàn)樵O(shè)置了正確的監(jiān)聽(tīng)器,當(dāng)接受到新的數(shù)據(jù)的時(shí)候,視圖就會(huì)自動(dòng)更新。數(shù)據(jù)更新的時(shí)候,Backbone支持多事件和自定義事件。

改變路由程序里面的代碼:

// 渲染Books頁(yè)面
loadBook: function (bookName){
    this.bookView.loadBook(bookName);
}

除了bookView類(lèi),其他都不會(huì)改變。添加構(gòu)造函數(shù)或者initialize方法,initialize方法是Backbone里面的一個(gè)特殊的字符屬性。每個(gè)實(shí)例初始化的時(shí)候都會(huì)調(diào)用這個(gè)屬性對(duì)應(yīng)的方法。

然后使用兩個(gè)事件——changespinner的自定義事件。我們將使用on()(別名bind)函數(shù)。

initialize: function (){
    this.model = new (Backbone.Model.extend({}));
    this.model.bind("change", this.render, this);
    this.bind("spinner", this.showSpinner, this);
}

上面的代碼做了兩件簡(jiǎn)單的事情:

當(dāng)模型改變時(shí)候調(diào)用render()函數(shù)

當(dāng)事件spinner觸發(fā)時(shí)調(diào)用showSpinner()函數(shù)

然后spinner怎么辦呢?,那就用一個(gè)簡(jiǎn)單的gif圖片把!在bookView里創(chuàng)建一個(gè)新的屬性:

templateSpinner: ""

spinner圖片(上網(wǎng)找一大堆):

接著回到一開(kāi)始那個(gè)loadBook函數(shù)里面,繼續(xù)寫(xiě)代碼:

loadBook: function (bookName){
    this.trigger("spinner");
    // 出現(xiàn)加載圖片
    var me = this;
    // 需要在閉包訪(fǎng)問(wèn)this
    setTimeout(function (){
        // 模擬從服務(wù)器獲取數(shù)據(jù)要的時(shí)間
        me.model.set(me.collection.where({
            name: bookName
        })[0].attributes);
    }, 1000);
}

里面觸發(fā)了spinner事件,還有為了解決作用域的問(wèn)題,需要在閉包里面訪(fǎng)問(wèn)this

setTimerout是為了模擬從服務(wù)器獲取響應(yīng)的時(shí)間。在它內(nèi)部里面,使用model.set()model.attributes(返回模型屬性)把選中的模型賦值給當(dāng)前視圖的模型。

最后把render函數(shù)里面多余的代碼去掉,實(shí)現(xiàn)showSpinner函數(shù):

render: function (bookName){
    var bookHtml = this.template(this.model);
    $("body").html(bookHtml);
},
showSpinner: function (){
    $("body").html(this.templateSpinner);
}

讓后打開(kāi)瀏覽器訪(fǎng)問(wèn)index.html#books/book1,如果可以看到加載的圖片的話(huà),就證明成功啦!

最后附上完整的代碼




backbone日常練習(xí)



bg

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/85520.html

相關(guān)文章

  • Backbone.js學(xué)習(xí)筆記(一)

    摘要:它通過(guò)數(shù)據(jù)模型進(jìn)行鍵值綁定及事件處理,通過(guò)模型集合器提供一套豐富的用于枚舉功能,通過(guò)視圖來(lái)進(jìn)行事件處理及與現(xiàn)有的通過(guò)接口進(jìn)行交互。 本人兼職前端付費(fèi)技術(shù)顧問(wèn),如需幫助請(qǐng)加本人微信hawx1993或QQ345823102,非誠(chéng)勿擾 1.為初學(xué)前端而不知道怎么做項(xiàng)目的你指導(dǎo) 2.指導(dǎo)并扎實(shí)你的JavaScript基礎(chǔ) 3.幫你準(zhǔn)備面試并提供相關(guān)指導(dǎo)性意見(jiàn) 4.為你的前端之路提供極具建設(shè)性的...

    FrancisSoung 評(píng)論0 收藏0
  • Backbone.js學(xué)習(xí)筆記(二)細(xì)說(shuō)MVC

    摘要:因?yàn)槭且粭l數(shù)據(jù)記錄,也就是說(shuō),相當(dāng)于是一個(gè)數(shù)據(jù)集。通常我們需要重載函數(shù),聲明,以及通過(guò)或?yàn)橐晥D指定根元素。通過(guò)綁定視圖的函數(shù)到模型的事件模型數(shù)據(jù)會(huì)即時(shí)的顯示在中。實(shí)例屬性參數(shù)以及類(lèi)屬性參數(shù)會(huì)被直接注冊(cè)到集合的構(gòu)造函數(shù)。 對(duì)于初學(xué)backbone.js的同學(xué)可以先參考我這篇文章:Backbone.js學(xué)習(xí)筆記(一) Backbone源碼結(jié)構(gòu) showImg(https://segme...

    taoszu 評(píng)論0 收藏0
  • 2017年前端流行的數(shù)百個(gè)javascript庫(kù),你會(huì)幾個(gè)?

    摘要:有數(shù)百個(gè)免費(fèi)的庫(kù)出來(lái),為應(yīng)用程序選擇正確的框架變得非常困難。是流行的驅(qū)動(dòng)技術(shù)之一,由于年創(chuàng)建。在這三個(gè)塊中,有幾個(gè)暴露低層接口的綁定。反應(yīng)由,和許多開(kāi)發(fā)人員和個(gè)人的社區(qū)維護(hù)。誕生于年,是一個(gè)輕量級(jí)的框架。 有數(shù)百個(gè)免費(fèi)的JS庫(kù)出來(lái),為應(yīng)用程序選擇正確的JavaScript框架變得非常困難。一些開(kāi)發(fā)商最終會(huì)拋棄,而其他開(kāi)發(fā)者則迅速發(fā)展,并得到廣泛采用。許多開(kāi)發(fā)人員只知道像jQuery和R...

    CoXie 評(píng)論0 收藏0
  • 帶你讀Backbone源碼解讀之Events實(shí)現(xiàn)

    摘要:接受個(gè)參數(shù),包括事件的名稱(chēng),回調(diào)函數(shù)和回調(diào)函數(shù)執(zhí)行的上下文環(huán)境。保留回調(diào)函數(shù)在數(shù)組中取出對(duì)應(yīng)的以及中的函數(shù)。當(dāng)然,你同樣可以在綁定的回調(diào)函數(shù)執(zhí)行前手動(dòng)通過(guò)將其移除。 Backbone源碼解讀 Backbone在流行的前端框架中是最輕量級(jí)的一個(gè),全部代碼實(shí)現(xiàn)一共只有1831行1。從前端的入門(mén)再到Titanium,我雖然幾次和Backbone打交道但是卻對(duì)它的結(jié)構(gòu)知之甚少,也促成了我想讀...

    AndroidTraveler 評(píng)論0 收藏0
  • backbone源碼解讀

    摘要:個(gè)人認(rèn)為,讀懂老牌框架的源代碼比會(huì)用流行框架的要有用的多。另外,源代碼中所有的以開(kāi)頭的方法,可以認(rèn)為是私有方法,是沒(méi)有必要直接使用的,也不建議用戶(hù)覆蓋。 寫(xiě)在前面 backbone是我兩年多前入門(mén)前端的時(shí)候接觸到的第一個(gè)框架,當(dāng)初被backbone的強(qiáng)大功能所吸引(當(dāng)然的確比裸寫(xiě)js要好得多),雖然現(xiàn)在backbone并不算最主流的前端框架了,但是,它里面大量設(shè)計(jì)模式的靈活運(yùn)用,以及令...

    Kross 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<