2015-05-07 2 views
0

Возможно, это скорее вопрос javascript, но я прохожу через это учебное пособие по основной теме и задаюсь вопросом, почему в конце этой строки есть $. $ El, и на каком элементе это указывает?

self.$el.append((new BlogView({ model: blog})).render().$el); 

Вот полный код ниже .....

var BlogsView = Backbone.View.extend({ 
    model: blogs, 
    el: $('.blogs-list'), 
    initialize: function() { 
     this.model.on('add', this.render, this); 
    }, 
    render: function() { 
     var self = this; 
     this.$el.html(''); 
     _.each(this.model.toArray(), function(blog) { 
      self.$el.append((new BlogView({ model: blog})).render().$el); 
     }); 
     return this; 
    } 
}); 
+0

Мы можем только предположить, что 'new BlogView ({model: blog})). render()' возвращает объект с свойством '$ el', являющимся узлом DOM, и этот узел должен быть добавлен к 'self. $ el'. –

ответ

2

$el является ссылкой на элемент DOM для просмотра. Макинтош-представления не являются самими элементами DOM, они представляют собой общие объекты javascript, которые имеют свойство $el, которое содержит элемент DOM, который является тем, что вы на самом деле видите на веб-странице. Вы можете думать о целях магистральных в качестве контроллера рода для элемента DOM, а также при добавлении обработчиков событий к вашему мнению, определить визуализации и т.д., вы всегда действуете на его DOM элементе, хранящемся в $el ($el тот же DOM элемент как el, первый просто отлично играет с jQuery). В этом случае, ваше мнение BlogView и если мы нарушаем new BlogView({ model: blog})).render().$el вверх:

  • new BlogView - создание экземпляра вашей точки зрения, позвоночник будет автоматически создавать DOM-элемент для вашего зрения и сохранить его в yourView.$el

  • .render() - отображение представления для его HTML-кода внутри элемента $el. В Backbone наша функция рендеринга - это то, где мы генерируем данные разметки/формата HTML и «рисуем» представление, перетаскивая эту разметку в наш вид $el.

  • render().$el - render() возвращает this, который является только наш сам вид, поэтому вызов render().$el, как говорят «вынести мое мнение и вернуть мой DOM элемент

  • self.$el.append(..). - это блок кода, таким образом, учитывая наш DOM элемент . $el который затем вставляет его

так положить все это вместе, мы получим: new BlogView({ model: blog})).render().$el который первым создает наш взгляд, делает нашу точку зрения и возвращает с нашей точки зрения DOM-элемент, который может быть ар переместился на страницу, манипулировал и т. д.

+0

Полностью другой вопрос .. В «" новом BlogView ({model: blog})). Render(). $ El "", в чем смысл не делать render() запускать автоматически? ... вы сказали, что сначала создаете нашу взгляд, затем показывает наше мнение ... почему они решили сделать их отдельно, а не просто всего одним выстрелом ...... – mc805

+0

Отличный ответ, кстати ... помог мне это понять – mc805

Смежные вопросы