2013-09-01 58 views
6

Có thể lấy ItemView cuối cùng từ một CompositeView Backbone không? Tôi đã tìm thấy rất nhiều tài liệu để lấy mô hình cuối cùng trong Bộ sưu tập chứ không phải là Chế độ xem cuối cùng trong Bộ sưu tập chế độ xem.Xem mục cuối cùng từ CompositeView trong Marionette

Lý do tôi muốn làm điều này là vì vậy tôi có thể hiển thị hàng cuối cùng trong một bảng hơi khác nhau.

Sau đây là mã tôi đang sử dụng ngay bây giờ, nó hoạt động tốt, nhưng nó sẽ ít "hacky" nếu tôi có thể có được ItemView chính xác từ CompositeView tạo và kết xuất nó. Nó sử dụng jQuery để tìm kiếm toàn bộ phần DOM được chứa bởi CompositeView cho phần tử cuối cùng, sau đó điều khiển phần tử đó.

B.ListControl.View = Backbone.Marionette.CompositeView.extend({ 
    itemView: ..., 
    itemViewContainer: ..., 
    template: ..., 
    // ON RENDER 
    onRender: function(){ 
     // Add button to the last element in the list 
     this.$el.find('div:last').text('Custome stuff goes here'); 
    } 
}); 

Cảm ơn!

Trả lời

10

Khi bộ sưu tập của bạn được nạp, bạn có thể có được mục cuối cùng theo cách này:

this.children.findByIndex(this.children.length - 1); 

Giữ plugin cung cấp rất nhiều phương pháp hữu ích cho bạn:

findByModel, findByCollection, findByCustom, findByIndex, findByCid

+0

Tuyệt vời, cảm ơn rất nhiều! –

+0

Tài liệu Backbone.BabySitter để tìm các khung nhìn từ một 'ChildViewContainer' (mà' .children' là một thể hiện): https://github.com/marionettejs/backbone.babysitter#retrieving-views – alxndr

+0

n.b. 'CompositeView' của Marionette có một thuộc tính gọi là '.ildildContainer' nhưng nó không liên quan: Marionette hy vọng nó là một chuỗi chọn jQuery mà nó sẽ sử dụng để xác định vị trí đặt các instance của lớp' childView' mà nó tạo ra. https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md#compositeviews-childviewcontainer – alxndr