【发布时间】:2012-05-25 07:12:08
【问题描述】:
我完全在研究流星,但我一直在努力减少示例的全局性并添加一些 OOP。
目前,我的代码如下所示:
# 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
但是,一个脊椎或脊椎,我真正想要的是这样的:
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
在流星中包裹车把模板的正确方法是什么?
我已设法包装 Meteor.Collection,但由于把手以模板命名对象,我不确定为模板执行此操作的正确方法。
更新
@greg 指出您可以使用 _.extend 添加属性。那行得通,但是如果我想将事件处理程序方法“query_submitted”和“clear_query_field”折叠到类中怎么办?像这样的:
_.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()
不太好用。事件处理程序没有被正确调用,我在控制台中收到错误,例如:
Uncaught TypeError: Object [object Window] has no method 'query_submitted'
同样,
events :
'submit #search_form' : (e) -> @query_submitted(e)
给予:
未捕获的类型错误:无法调用未定义的方法“调用”
那么缺少什么?
【问题讨论】:
标签: coffeescript meteor handlebars.js