Tôi đang đào hoàn toàn trên thiên thạch, nhưng tôi đang cố gắng cắt giảm tính toàn cầu của các ví dụ và thêm một dấu gạch ngang OOP.Bao bọc các mẫu xử lý meteor.js trong các lớp coffeescript
Hiện nay, mã của tôi trông như thế này:
# View for Search Form
form = Template.SearchForm
form.events =
'submit #search_form' : query_submitted
'click #load_more' : -> Songs.get_next_page()
'focus #query' : clear_query_field
form.page = -> Songs.page
form.total_pages = -> Songs.total_pages
Nhưng, một cột sống la hoặc xương sống, những gì tôi thực sự muốn có một cái gì đó như thế này:
class SearchForm extends Template.SearchForm
events:
'submit #search_form' : query_submitted
'click #load_more' : -> Songs.get_next_page()
'focus #query' : clear_query_field
page : -> Songs.page
total_pages : -> Songs.page
# etc etc
form = new SearchForm
bên phải là gì cách để bọc một handlebars mẫu trong thiên thạch?
Tôi đã quản lý để bọc Meteor.Collection, nhưng vì tay lái đặt tên cho đối tượng sau mẫu, tôi không chắc chắn đúng cách để làm điều đó cho Mẫu.
CẬP NHẬT
@ Greg chỉ ra rằng bạn có thể sử dụng _.extend để thêm các thuộc tính. Điều đó làm việc, nhưng nếu tôi muốn gấp các phương thức xử lý sự kiện 'query_submitted' và 'clear_query_field' vào lớp đó thì sao? Một cái gì đó như thế này:
_.extend Template.SearchForm,
events :
'submit #search_form' : @query_submitted
'click #load_more' : -> Songs.get_next_page()
'focus #query' : @clear_query_field
page : -> Songs.page
total_pages : -> Songs.total_pages
clear_query_field : (event) ->
console.log 'focus'
query_submitted : (event) ->
event.preventDefault()
Songs.clear()
Songs.query = $('#query')[0].value
Songs.search()
Không hoạt động. Xử lý sự kiện không được gọi là đúng và tôi nhận được sai sót trong giao diện điều khiển như:
Uncaught TypeError: Object [object Window] has no method 'query_submitted'
Tương tự,
events :
'submit #search_form' : (e) -> @query_submitted(e)
Cung cấp:
Uncaught TypeError: Cannot call method 'call' of undefined
Vì vậy, những gì còn thiếu?
Xin cảm ơn, @greg! Tôi đã tìm thấy giải pháp _.extend, nhưng tôi vẫn gặp sự cố khi mở rộng để bao gồm các hàm xử lý sự kiện. Tôi đã cập nhật câu hỏi, bạn sẽ có một cái nhìn? –