Backbone源码研讨 - Backbone.View

全部View的代码异常简约,View组织逻辑也一览无余。

javascriptvar View = Backbone.View = function(options) {
    this.cid = _.uniqueId('view');
    options || (options = {});
    _.extend(this, _.pick(options, viewOptions));
    this._ensureElement();
    this.initialize.apply(this, arguments);
    this.delegateEvents();
};
  1. 天生唯一cid
  2. 兼并参数列表
  3. 列表项目
  4. View的初始化
  5. 用户定义的初始化
  6. 事宜处置惩罚

能够看到,最主要的代码,在于View的初始化。

javascript_ensureElement: function() {
    if (!this.el) {
        var attrs = _.extend({}, _.result(this, 'attributes'));
        if (this.id) attrs.id = _.result(this, 'id');
        if (this.className) attrs['class'] = _.result(this, 'className');
        var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs);
        this.setElement($el, false);
    } else {
        this.setElement(_.result(this, 'el'), false);
    }
}

这段代码能够看出,假如实例化的时刻有传入一个DOM节点,则绑定这个DOM节点,不然天生一个如许的DOM节点。

javascriptvar view = new View({
    el: $('body'),
    model: new Backbone.Model()
})

结语:嗯,Backbone.View真的好简朴,没做什么事情。

    原文作者:Libo
    原文地址: https://segmentfault.com/a/1190000002681894
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞