Backbone文檔01

在開始之前,需要了解propertiesextend方法中使用的稱呼,attributes是創(chuàng)建模型對象時使用的稱呼,classProperties是定義Backbone中各個類的類屬性。

事件

以下是 backbone 中事件相關(guān)的方法和知識

  1. on
  • 用法,Backbone.events.on(event,callback[,context]),可以結(jié)合_.clone()進(jìn)行使用
  • 可以添加自定義事件,和trigger結(jié)合使用
  • 有命名空間events:namespace,比如change:name
  • 使用on方法有第三個參數(shù)context
  1. off
  • 用法,object.off([event,[callback],[context])
  1. trigger
  • 用法,object.trigger(evetn,[*args])
  1. once
  • 用法和on很像,區(qū)別在于綁定的回調(diào)函數(shù)觸發(fā)一次之后就會被移除
  1. listenTo
  • 用法,listenTo(other,event,cakkback)
  • 監(jiān)聽其他對象上的事件
  1. stopListening
  • 用法,stopListening([oter],[event],[callback])
  1. listenToOnce
  • 用法和listenTo很像,區(qū)別在于綁定的回調(diào)函數(shù)觸發(fā)一次后移除
// 在視圖中
events: {
    'click [role=edit]': function () {}
}

事件目錄 (Catalog of Events)

關(guān)于集合的事件

  1. add
  • 當(dāng)集合上添加模型對象時觸發(fā)
  • 默認(rèn)參數(shù),model,collection,options
  1. remove
  • 當(dāng)集合上移除模型對象的時候觸發(fā)
  • 默認(rèn)參數(shù),model,collection,options
  1. reset
  • 當(dāng)集合中全部內(nèi)容被替換時觸發(fā),比如collectionfetch方法
  • 默認(rèn)參數(shù),collection,options
  1. sort
  • 當(dāng)集合已經(jīng)被重新排序時觸發(fā)
  • 默認(rèn)參數(shù),collection,options

關(guān)于模型的事件

  1. change
  • 當(dāng)一個模型的屬性改變時觸發(fā)
  • 默認(rèn)參數(shù),model,options
  1. change:[attribute]
  • 當(dāng)一個模型中該特定屬性被更新時觸發(fā)
  • 默認(rèn)參數(shù),model,value,options
  1. destroy
  • 當(dāng)一個model被destroy時觸發(fā)
  • 默認(rèn)參數(shù),model,collection,options
  1. invalid
  • 當(dāng)模型在客戶端驗證失敗的時候觸發(fā),validate選項
  • 默認(rèn)參數(shù),model,error,options

關(guān)于請求的事件

  1. request
  • 當(dāng) 模型 或 集合 開始發(fā)送請求的時候觸發(fā)
  • 默認(rèn)參數(shù), model_or_collection,xhr,options
  1. sync
  • 當(dāng) 模型 或 集合 成功同步到服務(wù)器時觸發(fā)
  • 默認(rèn)參數(shù), model_or_collection,xhr,options
  1. error
  • 當(dāng) 模型 或 集合 請求遠(yuǎn)程服務(wù)器失敗的時候觸發(fā)
  • 默認(rèn)參數(shù), model_or_collection,xhr,options

關(guān)于路由的事件

  1. route
  • 當(dāng)任何一個路由相匹配通過路由器觸發(fā)
  • 默認(rèn)參數(shù),route,params
  1. route:[name]
  • 當(dāng)一個特定路由相匹配通過路由器觸發(fā)
  • 默認(rèn)參數(shù),params

特殊事件

  1. all
  • 所有事件發(fā)生都能觸發(fā)這個特別的事件
  • 第一個參數(shù)是觸發(fā)事件的名稱

小技巧

silent的設(shè)定,可以不觸發(fā)事件的回調(diào)函數(shù)

  1. 盡量少使用silent:true,向回調(diào)函數(shù)傳入一個特定的判斷參數(shù)

模型

模型類的方法

  1. Backbone.Model.extend(properties,[classAttributes])
  2. 擴展父類已有方法,并且想要調(diào)用父類方法,需要明確指出并調(diào)用。下邊的分類,是常用的方式

擴展模型類的選項

模型的選項,有時可以當(dāng)作方法用

  1. constructor或initialize,在new Backbone.model([attributes],[options])時調(diào)用
  • options可以設(shè)置collection:colName,如果沒有,當(dāng)模型添加到collection時會自動添加
  • options可以設(shè)置parse:true,當(dāng)使用set方法將數(shù)據(jù)setd到模型前調(diào)用parse方法
  1. idAttribute,設(shè)置模型的唯一標(biāo)識,默認(rèn)是id
  2. defaults,可以使用一個函數(shù)代替
  3. sync,少用,用于重新定義
  • 項目中應(yīng)用,一般sync用來發(fā)送ajax請求,但有時只需要從已有數(shù)據(jù)中篩選出一部分,此時可以重寫
  1. validate,函數(shù)
  • 也可以使用model.validata()的方式
  • 默認(rèn)在save調(diào)用之前驗證,也可以在set之前驗證,需要設(shè)置validate:true
  • 不返回則通過檢驗,有返回值(可以是布爾類型,可以是字符串)則未通過檢驗
  1. validateError,當(dāng)validate驗證失敗時候的返回值
  2. url
  • 也可以使用model.url()的方式
  1. urlRoot
  • 可以使用model.urlRoot的方式,也可以使用model.urlRoot()的方式

模型對象的屬性和方法

model代表是創(chuàng)建的模型對象,或稱為模型實例

  1. model.get(attribute)
  2. model.set(attributes,[options])
  • 觸發(fā)模型對象的change事件
  1. model.escape(attribute)get類似,但是返回HTML轉(zhuǎn)義版本的model屬性值
  2. model.has(attribute)
  • 當(dāng)該屬性值 非undefined 或 非null,返回true
  1. model.unset(attribute)
  • 從內(nèi)部屬性對象中刪除指定屬性
  • 觸發(fā)模型對象的change事件
  1. model.clear([options]),從模型中刪除所有屬性
  2. model.toJSON()將模型中attributes淺拷貝
  3. model.fetch([options])
  • 將服務(wù)器中數(shù)據(jù)拉回,并映射到模型上,當(dāng)發(fā)生改變的時候,會觸發(fā)change事件
  • options有success,error
  • 這兩個事件接受model,response,options作為參數(shù)
  1. model.save([attributes],[options])
  • 當(dāng)?shù)谝淮伪4婺P?,方法名為create,方式為post
  • 當(dāng)?shù)诙伪4婺P停椒麨閡pdate,方式為put
  • model.save(attrs,{patch}),方式為patch
  • 觸發(fā)change事件,和request事件,響應(yīng)成功,會觸發(fā)sync/error事件。
  • options有success,error,wait選項
  • 一般順序,先改模型,再同步到服務(wù)器上,如果想要等待服務(wù)器再設(shè)置新的屬性,那么要添加屬性wait:true。當(dāng)出錯時,模型上保持舊的。
  1. model.destroy([options])
  • 觸發(fā)destory事件,和request事件,響應(yīng)成功,會觸發(fā)sync事件。
  • options有success,error,wait
  1. model.isValid()
  • 可以運行validate檢查模型狀態(tài)
  1. model.id
  2. model.cid當(dāng)模型創(chuàng)建的時候自動生成的唯一標(biāo)志符
  3. model.attributes模型內(nèi)部對象
  4. model.changed改變的模型內(nèi)部對象,一般不使用它,使用model.changedAttributes()
  5. model.parse()
  • fetch從服務(wù)器返回數(shù)據(jù)模型數(shù)據(jù),以及save時執(zhí)行。
  • 接受默認(rèn)參數(shù)response,options
  1. model.clone()
  2. model.isNew()
  • 沒有 id 的模型就是新的
  1. model.hasChanged()
  • change事件中使用
  • 參數(shù)是需要檢驗的屬性名
  1. model.changeAttributes([attributes])
  • change事件中使用
  • 該模型上改變的所有屬性的集合
  1. model.previous()
  • change事件中使用
  • 參數(shù)是需要檢驗的屬性名
  1. model.previousAttributes()
  • change事件中使用
  • 該模型上改變的所有屬性舊值的集合

Underscore方法

Backbone代理了Underscore.js用來給Backbone.Model提供的六個對象函數(shù),使用的時候可以使用模型對象直接使用

  1. keys,獲得可枚舉屬性的數(shù)組
  2. values,獲得可枚舉屬性的屬性值數(shù)組
  3. pairs,把對象轉(zhuǎn)化成[key:value]數(shù)組
  4. invert,返回一個 key 和 value 互換的對象副本,需要保證value是唯一的
  5. pick,過濾出對象的某些屬性
  6. omit,將對象的某些屬性過濾掉
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 寫在前面 backbone是我兩年多前入門前端的時候接觸到的第一個框架,當(dāng)初被backbone的強大功能所吸引(當(dāng)...
    浙大javascript聯(lián)盟閱讀 1,234評論 0 5
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,597評論 0 6
  • 我不缺什么 只是孤獨 可是啊 當(dāng)你擁有孤獨的時候 你就成了全世界最貧窮的人 享受孤獨 總要留下一點什么 比如說,眼...
    嘉溫閱讀 277評論 0 9
  • 父子倆走在上學(xué)路上。一個小女孩也被家人用電動車送上學(xué)。他們相遇了。小女孩叫了兒子的名字。兒子認(rèn)出是他的同桌,也叫出...
    孑立萬木閱讀 224評論 0 0

友情鏈接更多精彩內(nèi)容