【发布时间】:2014-02-01 07:35:36
【问题描述】:
我正在尝试使用主干/marionette.js 从 .eco 模板中访问模型的方法。我有一个带有day() 方法的Expense 模型,该方法使用moment.js 返回'13th';例如:
class Expense extends Backbone.Model
day: ->
moment.get('date').format('Do')
我可以如下新建Expense,并调用day()方法:
coffee = new Expense({name: "Coffee", amount: 2.50, date: "2014-01-13T13:50:00Z"})
coffee.day() # 13th
但是,尝试从以下视图和模板中访问 day() 会给我带来一些问题:
class ExpenseView extends Marionette.ItemView
template: "views/_expense"
# views/_expense.jst.eco
<h3 class="expense__name"><%= @name %></h3>
<p class="expense__day"><%= @day() %></p>
我理解为什么它不起作用...ItemView 调用 serializeData 返回 @model.toJSON()...因此,Expense 的 day() 方法是'不可访问。骨干/牵线木偶社区中是否存在使模型方法可用于模板的既定模式?
到目前为止,我已经完成了以下工作:
class ExpenseView extends Marionette.ItemView
template: "views/_expense"
serializeData: ->
_.extend(@model.toJSON(), model: @model)
templateHelpers:
day: ->
@model.day()
但我不确定这是否是解决问题的最佳方法?谢谢!
【问题讨论】:
标签: javascript backbone.js coffeescript marionette