2012-06-25 28 views
5

Tôi sử dụng backbone.js và có mô hình không có bộ sưu tập. Trong chế độ xem, tôi gọi hàm tìm nạp trên mô hình có gọi lại để hiển thị chế độ xem.chế độ xem tự động cập nhật trong backbone.js

this.user.fetch({success: function(d) { self.randomUserView.render() }}) 

làm cách nào để tự động cập nhật chế độ xem khi mô hình thay đổi? ví dụ. Tôi không muốn chỉ định cuộc gọi lại ở trên mỗi khi tôi gọi hàm tìm nạp. Tôi đã cố gắng để ràng buộc xem với nhiều sự kiện mô hình trên khởi tạo nhưng điều này đã không làm việc.

Trả lời

12

Trên quan điểm, thêm một event handler để mô hình của xem:

initialize: function() { 
    this.model.on('change',this.render,this); 
} 
+0

Đó là 'thay đổi' hoặc 'thêm' tùy thuộc vào kiểu máy này đã được tải hay chưa. Nhưng thông thường bạn sử dụng fetch() để tải các mô hình mới, vì vậy bạn đăng ký để 'thêm'. –

+1

bạn có thể chơi nó an toàn và chỉ cần đi với 'this.model.bindAll (this.render)', giả sử bạn là anh ta ok với rendering xem trên mọi sự kiện mô hình – jackwanders

1

Backbone là hướng sự kiện, không gọi lại khuôn khổ thúc đẩy (mặc dù về mặt kỹ thuật chúng callbacks). Và cách tiếp cận của bạn dường như không có nguồn gốc từ Backbone. Khi bạn tìm nạp(), mô hình người dùng sẽ tự động kích hoạt sự kiện "thêm". Tất cả bạn cần làm là trong giao diện tương ứng thêm này trong initialize:

initialize: function() { 
    ... your code... 
    this.model.bind('add', this.render); 
} 

Bằng cách này bạn đăng ký này thậm chí chỉ một lần trong giao diện init và không phải bao giờ vượt qua callbacks rõ ràng.

+0

Backbone không phải là một framework, nó là một thư viện. – Fdr

0

Thực ra nếu bạn muốn làm mới chế độ xem khi tìm nạp trên bộ sưu tập, bạn cần phải liên kết RESET!

this.model.bind('reset', this.render, this); 

Cập nhật chỉ được kích hoạt nếu bộ sưu tập hiện tại được chỉnh sửa.

ps bindAll rất nguy hiểm và lười biếng. (và có thể sẽ khiến bạn gặp trục trặc)

+0

Nếu bạn downvote câu trả lời này có thể được như vậy loại để giải thích tại sao? – sidonaldson

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