2011-08-15 53 views
11

Vì vậy, tôi có một mạng lưới dữ liệu và mỗi mục trong lưới có mô hình và chế độ xem được liên kết. Tôi cần hiển thị từng mục là hai hàng bảng để đạt được giao diện người dùng mong muốn. (Không, nó không phải là thiết kế của tôi ...)Nhiều hàng trong bảng dưới dạng chế độ xem backbone.js?

Lần thử đầu tiên: trong phương thức render() của chế độ xem, chỉ hiển thị hai hàng và thêm chúng vào this.el. Sau đó, tôi thêm mỗi chế độ xem vào bảng và khám phá ra rằng mỗi cặp hàng đã được gói trong một <div>. HTML không hợp lệ và bố cục đều sai.

Ok, lần thử thứ hai: hiển thị lại hai hàng trong chế độ xem, nhưng thay vì thêm toàn bộ chế độ xem vào bảng, tôi chỉ thêm các hàng con bằng cách sử dụng tableItemView.$("tr"). Hoan hô, nó hoạt động! Nhưng giữ trên ... các sự kiện hàng giờ đã ngừng bắn. Tôi phát hiện ra điều này là vì xương sống sử dụng jQuery.delegate, vì vậy tất cả các sự kiện đã được giao cho el ban đầu mà không còn là một phần của bảng.

Tôi yêu kiến ​​trúc sạch của xương sống nhưng phải đấu tranh để tìm ra giải pháp tốt cho việc này. Bất kỳ ý tưởng?

+0

Bạn có thể đăng một số mã của mình không? –

+0

Tôi không có quyền truy cập vào nó ngay bây giờ, nhưng có thể đăng một số ngày mai nếu nó sẽ giúp đỡ. – minimalis

Trả lời

19

Thiết

tagName: 'tbody' 

nên cho phép bạn nhóm các thẻ tr có liên quan với nhau mà không phá vỡ bàn và vẫn cho phép this.el để làm việc.

+0

OK - nhưng sau đó tôi cần thêm một số phần tử 'tbody' này vào cùng một bảng. Điều đó nghe có vẻ không đúng. – minimalis

+2

Thực ra, có vẻ như nhiều 'tbody' được cho phép trong các bảng: http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3 - Tôi không biết điều đó. – minimalis

1

Trong đối tượng xem của bạn, thuộc tính tagName của bạn được đặt thành là gì?

Từ các tài liệu:

this.el is created from the view's tagName, className, and id properties, 
if specified. If not, el is an empty div 

Bạn có thể muốn thiết lập

tagName: 'tr' 

Và sau đó trong render():

$(this.el).html("<td>content for row one</td>").append("<tr><td>content for row two</td></tr>"); 

Điều đó có thể không hoạt động chính xác, nhưng bạn sẽ có được Ý tưởng.

+0

Sẽ không 'nối thêm()' thêm hàng thứ hai bên trong hàng đầu tiên? Đó là những gì bạn đang đề xuất? – minimalis

0

Một tùy chọn là chỉ cần tạo 2 chế độ xem nhỏ mà mỗi tham chiếu cùng một mô hình, một cho mỗi hàng.

Tùy thuộc vào cách tích hợp 2 hàng cần (có thể được di chuyển/sắp xếp dưới dạng đơn vị), bạn có thể có chế độ xem 'điều khiển' tạo tiểu sử và phối hợp hành vi của chúng.

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