Подтвердить что ты не робот

Backbone.js render(). El Использование

У меня есть этот фрагмент кода из учебника Backbone.js из здесь. Код выглядит следующим образом:

(function($){

    var Item = Backbone.Model.extend({
        defaults: {
            part1: 'Hello',
            part2: 'World'
        }
    });

    var ItemList = Backbone.Collection.extend({
        model: Item
    });

    var ItemView = Backbone.View.extend({
        tagName: 'li',

        initialize: function(){
            _.bindAll(this, 'render');
        },

        render: function(){
            $(this.el).html("<span>" + this.model.get('part1') + " " + this.model.get('part2') + "</span>");
            return this;
        }

    });

    var AppView = Backbone.View.extend({
        el: $('body'),

        initialize: function(){
            _.bindAll(this, 'render', 'addItem', 'appendItem');

            this.collection = new ItemList();
            this.collection.bind('add', this.appendItem)
            this.counter = 0;
            this.render();
        },

        events: {
            'click button#add': 'addItem'
        },

        addItem: function(){
            var item = new Item();
            item.set({
                'part2': item.get('part2') + this.counter++
            });
            this.collection.add(item);
        },

        appendItem: function(item){
            var itemView = new ItemView({
                model: item
            });
            $('#list', this.el).append(itemView.render().el);
        },

        render: function(){
            $(this.el).append("<button id='add'>Add Item</button>");
            $(this.el).append("<ul id='list'></ul>")
        },
    });

    var Tasker = new AppView();

})(jQuery);

Есть одна вещь, которую я не мог понять из приведенного выше кода. В функции appendItem есть эта часть кода:

itemView.render().el

Может ли кто-нибудь объяснить мне, почему функция render() вызывается с частью .el и почему не просто itemView.render()?

Спасибо за ваше время и помощь: -)

4b9b3361

Ответ 1

Вызов render() возвращает элемент itemView. Затем он запрашивает переменную экземпляра el (сам элемент), который затем добавляется к представлению списка. По существу, представление списка включает в себя все элементы отдельных элементов, которые отображаются отдельно.