尽我所能学习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);
答案 0 :(得分:2)
如果您查看代码,您正在做的是扩展(Backbone.View.extend({//options})
)默认主干视图对象以及您要添加的任何属性。如果您在骨干视图中传递默认存在的属性,则会使用您传递的值覆盖该属性。
默认情况下,所有骨干视图都具有el
属性。如果您未在选项中明确传递其值,则骨干将创建<div>
并将其分配给el
属性。
当您在选项中传递el: $('body')
时,骨干网会将默认的el
媒体资源指向<body>
,并且不会创建<div>
。
通过在选项中传递myEL: $('body')
,您可以在名为myEL
的视图对象中创建一个指向<body>
元素的属性,在这种情况下,这似乎是非常不必要的。