2012-09-09 43 views
10

Tôi đã nhận đoạn mã này từ hướng dẫn Backbone.js từ here. Mã này như sau:Backbone.js render(). El Cách sử dụng

(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); 

Có một điều tôi không thể hiểu được từ mã trên. Trong chức năng appendItem có đoạn mã này:

itemView.render().el 

Ai có thể giải thích cho tôi tại sao chức năng render() được gọi với phần .el và tại sao không chỉ itemView.render()?

Cảm ơn bạn đã dành thời gian và giúp :-)

Trả lời

12

Cuộc gọi render() trả về itemView riêng của mình. Sau đó nó yêu cầu biến cá thể el (chính phần tử), sau đó được nối vào chế độ xem danh sách. Về bản chất, chế độ xem danh sách bao gồm tất cả các phần tử của các mục được hiển thị riêng lẻ.

+0

cảm ơn câu trả lời hay nhất :-) – Hirvesh

Các vấn đề liên quan