gpt4 book ai didi

coffeescript - 在 coffeescript 类中包装meteor.js Handlebars 模板

转载 作者:行者123 更新时间:2023-12-04 05:20:29 26 4
gpt4 key购买 nike

我完全在研究 meteor ,但我一直试图减少示例的全局性并添加一些 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

但是,一个脊椎或 Backbone ,我真正想要的是这样的:
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 中包装 Handlebars 模板的正确方法是什么?

我已经设法包装了 Meteor.Collection,但是因为 Handlebars 以模板命名对象,所以我不确定为模板执行此操作的正确方法。

更新

@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)

给出:

Uncaught TypeError: Cannot call method 'call' of undefined



那么缺少什么?

最佳答案

Meteor 带有下划线,因此您可以:

_.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.page

关于coffeescript - 在 coffeescript 类中包装meteor.js Handlebars 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com