backbone 之事件(events)


  最近用 backbone 做了一個項目,加深了對前端mvc理解。同時也很多的收獲。糾正了我對閱讀源碼的認識。一定要應用的熟練后,了解其思想后,再去閱讀源碼!千萬不要本末倒置。想寫寫自己對backbone的感悟!接下來第一步就是backbone的event。

  backbone的event 是其核心。是model和view的紐帶。了解event 是必要的。

 舉個例子:

var User = function(name) {
    this.name = name;
}
User.records = [];

User.bind = function(ev, callback) {
    var calls = this._callbacks || (this._callbacks = {});
    (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback);
}

User.trigger = function(ev) {
    var list, calls, i, l;
    if (!(calls =this._callbacks)) return this;
    if (!(list = this._callbacks[ev])) return this;
    $.each(list, function(){this.apply(this())})
}

User.bind('change', function(){
    alert('dddd');
});
User.create = function(name){
    this.records.push(new this(name));
    this.trigger('change');
}

User.create('liuzhang');

 當我們user調用create 就會觸發change事件。其實backbone events也一樣的思路,比如model 改變會觸發change事件。collections 添加會觸發add事件。

只要繼承backbone 的Events 對象,對象就擁有了on,off。trigger等能力!比如文檔上

var object = {};

_.extend(object, Backbone.Events);

object.on("alert", function(msg) {
  alert("Triggered " + msg);
});

object.trigger("alert", "an event");

 上述的obejct 就可以添加了一些事件和回調,非常方便的。你可以翻翻backbone的源碼看到

_.extend(Model.prototype, Events, {});
_.extend(Collection.prototype, Events, {})
_.extend(View.prototype, Events, {});

model,view ,collection 都繼承了events

backbone內置事件寫的很優雅。實現很強大的功能!ok就寫到此吧

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM