Sco*_*mon 6 coffeescript handlebars.js 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
Run Code Online (Sandbox Code Playgroud)
但是,一个脊柱或骨干,我真正想拥有的是这样的:
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
Run Code Online (Sandbox Code Playgroud)
在流星中包裹把手模板的正确方法是什么?
我已经设法包装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()
Run Code Online (Sandbox Code Playgroud)
不太合适.事件处理程序没有被正确调用,我在控制台中遇到错误,如:
未捕获的TypeError:对象[对象窗口]没有方法'query_submitted'
同样的,
events :
'submit #search_form' : (e) -> @query_submitted(e)
Run Code Online (Sandbox Code Playgroud)
得到:
未捕获的TypeError:无法调用未定义的方法'call'
那么缺少什么?
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |