10

ここから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);

上記のコードから理解できなかったことが1つあります。関数appendItemには、次のコードがあります。

itemView.render().el

render()なぜ関数が.elパーツで呼び出されるのか、そしてなぜそれだけではないのか、誰かが私に説明できitemView.render()ますか?

お時間を割いてご協力いただきありがとうございます:-)

4

1 に答える 1

12

このrender()呼び出しは、itemView 自体を返します。次に、elインスタンス変数 (要素自体) を要求し、リスト ビューに追加します。基本的に、リスト ビューには、個別にレンダリングされた項目のすべての要素が含まれます。

于 2012-09-09T15:27:51.510 に答える