EL强制还是我们可以使用其他属性名称?

时间:2015-10-10 14:17:48

标签: jquery backbone.js backbone-views

尽我所能学习BackboneJS。有人告诉我" el"很特别。但是,查看下面的代码,看起来我可以使用我喜欢的任何属性名称。例如:

MyEL : $('body')

然后我会以这种方式使用它

$(this.MyEL).append("<ul></ul>");

如果我不使用el,我会违反吗?我打破了什么吗?

(function($){
  var ListView = Backbone.View.extend({
    el: $('body'), // el attaches to existing element
    myEL: $('body'), // myEL attaches to existing element

    events: {
      'click button#add': 'addItem'
    },
    initialize: function(){
      _.bindAll(this, 'render', 'addItem'); // every function that uses 'this' as the current object should be in here

      this.counter = 0; // total number of items added thus far
      this.render();
    },

    // `render()` now introduces a button to add a new list item.
    render: function(){
    //  $(this.el).append("<button id='add'>Add list item</button>");
    //  $(this.el).append("<ul></ul>");

      $(this.myEL).append("<button id='add'>Add list item</button>");
      $(this.myEL).append("<ul></ul>");
    },

    // `addItem()`: Custom function called via `click` event above.
    addItem: function(){
      this.counter++;
      $('ul', this.el).append("<li>hello world"+this.counter+"</li>");
    }
  });

  var listView = new ListView();
})(jQuery);

1 个答案:

答案 0 :(得分:2)

如果您查看代码,您正在做的是扩展Backbone.View.extend({//options}))默认主干视图对象以及您要添加的任何属性。如果您在骨干视图中传递默认存在的属性,则会使用您传递的值覆盖该属性。

默认情况下,所有骨干视图都具有el属性。如果您未在选项中明确传递其值,则骨干将创建<div>并将其分配给el属性。

当您在选项中传递el: $('body')时,骨干网会将默认的el媒体资源指向<body>,并且不会创建<div>

通过在选项中传递myEL: $('body'),您可以在名为myEL的视图对象中创建一个指向<body>元素的属性,在这种情况下,这似乎是非常不必要的。